我有几个字符串,其中有多个掩码。我想知道是否有更好的方法来处理带有掩码解析的字符串,而不是 String.spilt 并循环标记并识别序列等。此代码也变得笨拙,因为必须编码大量标记逻辑。
示例掩码可以是:
- 产品地点州城市
- PROD-DEST-STATE-ZIP
- 产品-OZIP-DZIP-VER-INS
示例字符串:
- CoolDuo-GROUND-NYC-10082
示例代码:
String[] arr = input.split("-");
int pos = 0;
for(String k:arr){
if(pos == 0) {
//-- k is of PROD
...
...
}
..
...
pos++;
}
每种掩码类型都保留上述类型的代码。
最佳答案
您可以使用正则表达式组通过组名称获取目标字符串 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);
}
关于java - 基于mask的字符串解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18067901/