基于掩码的字符串解析

gpa*_*gpa 0 java

我有几个字符串多个掩码.我想知道有没有更好的方法来处理字符串与掩码解析而不是String.spilt和循环标记和识别序列等.这个代码也很笨拙,许多令牌逻辑必须编码.

样品掩码可以是:

  1. PROD-LOC-STATE城市
  2. PROD-DEST-STATE-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++;
}
Run Code Online (Sandbox Code Playgroud)

针对每种掩码类型保留上述类型的代码.

Mic*_*hin 7

您可以使用正则表达式组按组名http://docs.oracle.com/javase/tutorial/essential/regex/groups.html获取目标字符串.在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);
}
Run Code Online (Sandbox Code Playgroud)