怎么判断一个字符串是英文还是Java代码
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章主要介绍了怎么判断一个字符串是英文还是Java代码的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么判断一个字符串是英文还是Java代码文章都会有所收获,下面我们
千家信息网最后更新 2026年11月01日怎么判断一个字符串是英文还是Java代码
这篇文章主要介绍了怎么判断一个字符串是英文还是Java代码的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么判断一个字符串是英文还是Java代码文章都会有所收获,下面我们一起来看看吧。
考虑以下两个字符串:
1. for (int i = 0; i < b.size(); i++) {
2.do something in English (not necessary to be a sentence).
第一个是Java代码,第二个是英文。如何检测第一个是代码,第二个是英文?
Java 代码可能无法解析,因为它不是完整的方法/语句/表达式。下面为这个问题提供了一个解决方案。由于有时代码和英文之间没有明确的界限,准确度不可能是 100%。但是,使用下面的解决方案,你可以轻松调整程序以满足你的需求。
基本思想是将字符串转换为一组标记。例如,上面的代码行可能会变成"KEY,SEPARATOR,ID,ASSIGN,NUMBER,SEPARATOR,..."。然后我们可以使用简单的规则将代码与英文分开。
标记器类将字符串转换为标记列表。
package lexical; import java.util.LinkedList;import java.util.regex.Matcher;import java.util.regex.Pattern; public class Tokenizer { private class TokenInfo { public final Pattern regex; public final int token; public TokenInfo(Pattern regex, int token) { super(); this.regex = regex; this.token = token; } } public class Token { public final int token; public final String sequence; public Token(int token, String sequence) { super(); this.token = token; this.sequence = sequence; } } private LinkedList tokenInfos; private LinkedList tokens; public Tokenizer() { tokenInfos = new LinkedList(); tokens = new LinkedList(); } public void add(String regex, int token) { tokenInfos .add(new TokenInfo(Pattern.compile("^(" + regex + ")"), token)); } public void tokenize(String str) { String s = str.trim(); tokens.clear(); while (!s.equals("")) { //System.out.println(s); boolean match = false; for (TokenInfo info : tokenInfos) { Matcher m = info.regex.matcher(s); if (m.find()) { match = true; String tok = m.group().trim(); s = m.replaceFirst("").trim(); tokens.add(new Token(info.token, tok)); break; } } if (!match){ //throw new ParserException("Unexpected character in input: " + s); tokens.clear(); System.out.println("Unexpected character in input: " + s); return; } } } public LinkedList getTokens() { return tokens; } public String getTokensString() { StringBuilder sb = new StringBuilder(); for (Tokenizer.Token tok : tokens) { sb.append(tok.token); } return sb.toString(); }} 我们可以得到Java的关键字、分隔符、运算符、标识符等,如果我们给token分配一个映射值,就可以将一个英文字符串转换为一个token字符串。
package lexical; import greenblocks.javaapiexamples.DB;import java.io.IOException;import java.sql.ResultSet;import java.sql.SQLException;import java.util.regex.Matcher;import java.util.regex.Pattern; import org.apache.commons.lang.StringUtils; import NLP.POSTagger; public class EnglishOrCode { private static Tokenizer tokenizer = null; public static void initializeTokenizer() { tokenizer = new Tokenizer(); //key words String keyString = "abstract assert boolean break byte case catch " + "char class const continue default do double else enum" + " extends false final finally float for goto if implements " + "import instanceof int interface long native new null " + "package private protected public return short static " + "strictfp super switch synchronized this throw throws true " + "transient try void volatile while todo"; String[] keys = keyString.split(" "); String keyStr = StringUtils.join(keys, "|"); tokenizer.add(keyStr, 1); tokenizer.add("\\(|\\)|\\{|\\}|\\[|\\]|;|,|\\.|=|>|<|!|~|" + "\\?|:|==|<=|>=|!=|&&|\\|\\||\\+\\+|--|" + "\\+|-|\\*|/|&|\\||\\^|%|\'|\"|\n|\r|\\$|\\#", 2);//separators, operators, etc tokenizer.add("[0-9]+", 3); //number tokenizer.add("[a-zA-Z][a-zA-Z0-9_]*", 4);//identifier tokenizer.add("@", 4); } public static void main(String[] args) throws SQLException, ClassNotFoundException, IOException { initializeTokenizer(); String s = "do something in English"; if(isEnglish(s)){ System.out.println("English"); }else{ System.out.println("Java Code"); } s = "for (int i = 0; i < b.size(); i++) {"; if(isEnglish(s)){ System.out.println("English"); }else{ System.out.println("Java Code"); } } private static boolean isEnglish(String replaced) { tokenizer.tokenize(replaced); String patternString = tokenizer.getTokensString(); if(patternString.matches(".*444.*") || patternString.matches("4+")){ return true; }else{ return false; } }}输出:
EnglishJava Code
关于"怎么判断一个字符串是英文还是Java代码"这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对"怎么判断一个字符串是英文还是Java代码"知识都有一定的了解,大家如果还想学习更多知识,欢迎关注行业资讯频道。
代码
字符
字符串
英文
还是
标记
知识
内容
方案
篇文章
解决方案
面的
两个
之间
价值
关键
关键字
准确度
分隔符
思想
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网科技海报
广东万易互联网科技有限公司惠州分公司
互联网科技巨头监管
互联网科技官网
智能科技公司是互联网公司吗
青岛互联网科技公司
奇士达互联网科技
哈尔滨秒房互联网科技有限公司
天速互联网络科技有限公司
中国的互联网科技企业的崛起
互联网校园科技培训
互联网科技项目计划书材料类
智腾互联网科技有限公司
移动互联网科技公司
哈尔滨屹滨互联网科技有限公司
呼和浩特新华互联网科技学院
国大互联网教育科技有限公司工作
张召忠谈中国互联网科技
互联网科技对化妆品行业
数字科技和互联网金融哪个好
广东猪兼强互联网科技有限公司
互联网巨头反垄断金融科技
互联网下的科技发展
汇久创客互联网科技
欧洲十大科技互联网公司
21世纪互联网科技成就
东营紫格互联网科技
广东鹅鹅鹅互联网科技有限公司
唯美互联网科技
唐山双旺合互联网科技产业园