我有几个字符串,多个掩码。我想知道有没有更好的方法来处理字符串与掩码解析而不是String.spilt和循环标记和识别序列等。这个代码也很笨拙,许多令牌逻辑必须编码。
样品掩码可以是:
示例字符串:
示例代码:
String[] arr = input.split("-");
int pos = 0;
for(String k:arr){
if(pos == 0) {
//-- k is of PROD
...
...
}
..
...
pos++;
}
为每种掩码类型保留上面的代码类型。
答案 0 :(得分:7)
您可以使用正则表达式组按组名http://docs.oracle.com/javase/tutorial/essential/regex/groups.html获取目标字符串。请检查此Regex Named Groups in Java
如果你不能使用命名组,你可以这样做(如果你的字符串结构绝对确定):
final static int PROD_POS = 1;
final static int STATE_POS = 3;
...
Pattern pattern = Pattern.compile("(some_regexp)-(some_regexp)-(some_regexp)");
Matcher matcher = pattern.matcher(input);
if ( matcher.matches() ) {
String state = matcher.group(STATE_POS);
}
答案 1 :(得分:0)
如果你真的想深入研究这个问题,当你的面具太大而无法管理时,你可以使用某种可用于java的词法分析包。
如果你想了解真正意味着什么的基础(http://en.wikipedia.org/wiki/Lexical_analysis)
一个流行的java版本是JFlex(http://jflex.de/),但是还有很多其他版本,只有谷歌才能获得最佳效果!
祝你好运