怎么判断一个字符串是英文还是Java代码
发表于:2025-11-08 作者:千家信息网编辑
千家信息网最后更新 2025年11月08日,这篇文章主要介绍了怎么判断一个字符串是英文还是Java代码的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么判断一个字符串是英文还是Java代码文章都会有所收获,下面我们
千家信息网最后更新 2025年11月08日怎么判断一个字符串是英文还是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安全错误
数据库的锁怎样保障安全
网管软件开发 用什么语言
软件开发 英文教材
普陀区软件开发预算
为什么联想服务器需要下载驱动
文件服务器集群搭建
国粹和互联网科技产生的反应
加固服务器厂商定制
软件开发者调查
局域网络技术白皮书下载
网络技术专科生怎么提高
上海聊聊网络技术有限公司
qq空间自动赞脚本数据库
队伍管理网络安全警示教育稿件
数据库变现
认证服务器失败
网络安全管理课件
服务器端返回消息错误
vs2012默认数据库
上海杨桃互联网科技有限公司
全文数据库有哪些英文数据库
俄罗斯汽车数据库
网络安全大赛知识答题
服务器配置上传命令
斗破苍穹手游选什么服务器好
现在的网络技术还能用吗
数据库被人删除了怎么办
自动售货机软件开发团队
西安卓越软件开发商
跨平台pc软件开发
电子商务网络技术基础第3版答案