基于掩码的字符串解析

时间:2013-08-05 21:18:38

标签: java

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

样品掩码可以是:

  1. PROD-LOC-STATE-CITY
  2. PROD-DEST-STATE-ZIP
  3. PROD-OZIP-DZIP-VER-INS
  4. 示例字符串:

    1. CoolDuo - 地 - NYC-10082
    2. 示例代码:

       String[] arr = input.split("-");
       int pos = 0;
       for(String k:arr){
      
        if(pos == 0) {
           //-- k is of PROD
           ...
           ...
        }
        ..
        ...
      
        pos++;
      }
      

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

2 个答案:

答案 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/),但是还有很多其他版本,只有谷歌才能获得最佳效果!

祝你好运