0

我有几个字符串,其中有多个掩码。我想知道是否有更好的方法来处理带有掩码解析的字符串,而不是 String.spilt 和循环标记并识别序列等。这段代码也变得笨拙,许多标记逻辑必须编码。

示例掩码可以是:

  1. 产品-本地-州-城市
  2. 产品-目的地-状态-ZIP
  3. PROD-OZIP-DZIP-VER-INS

示例字符串:

  1. CoolDuo-GROUND-NYC-10082

示例代码:

 String[] arr = input.split("-");
 int pos = 0;
 for(String k:arr){

  if(pos == 0) {
     //-- k is of PROD
     ...
     ...
  }
  ..
  ...

  pos++;
}

为每种掩码类型保留上述类型的代码。

4

2 回答 2

7

您可以使用正则表达式组通过组名称http://docs.oracle.com/javase/tutorial/essential/regex/groups.html获取目标字符串。在 Java 中检查这个Regex Named Groups

如果你不能使用命名组,你可以这样做(如果你绝对确定你的字符串结构):

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);
}
于 2013-08-05T21:35:46.163 回答
0

如果你真的想在你的掩码太大而无法管理时深入研究这个问题,你可以使用某种可用于 java 的词法分析包。

如果您想了解其真正含义的基础,请查看此处(http://en.wikipedia.org/wiki/Lexical_analysis

一个流行的 Java 包是 JFlex ( http://jflex.de/ ),但是还有很多其他的,只要谷歌它以获得最佳结果!

祝你好运

于 2013-08-05T21:50:05.747 回答