怎么判断一个字符串是英文还是Java代码
发表于:2025-01-18 作者:千家信息网编辑
千家信息网最后更新 2025年01月18日,这篇文章主要介绍了怎么判断一个字符串是英文还是Java代码的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么判断一个字符串是英文还是Java代码文章都会有所收获,下面我们
千家信息网最后更新 2025年01月18日怎么判断一个字符串是英文还是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安全错误
数据库的锁怎样保障安全
自动导入数据库表
服务器虚拟机网卡怎么设置
医学科研病例数据库
想学软件开发需要什么学历
流媒体服务器动态地址输出
长沙软件开发报价
常见的网络安全体系架构
服务器2008安全配置软件
兰州小型软件开发公司
中小学生家族教育与网络安全
数据库中模糊查询写法
分布式数据库主键
hmcl怎么登录外置服务器
激萌软件开发文档
河北网络安全公约
腾讯服务器什么时候建的
盱眙软件开发文档
总书记网络安全讲话内容
b网络安全
灵寿高科技软件开发服务装饰
山西上门软件开发商家
软件开发部英文单词
数据库语句已终止怎么办
对于维护国家网络安全
多台电脑共用一个服务器怎么连接
上海软件开发求职网站
数据库前端和后台有什么关系
河北常见软件开发哪家便宜
数据库设计相关论文
计算机网络技术算程序员吗