Java 基于掩码的字符串解析

Java 基于掩码的字符串解析,java,Java,我有几个字符串,其中包含多个掩码。我想知道有没有更好的方法来处理掩码解析字符串,而不是String.Spit和循环标记和标识序列等。这段代码也变得很笨拙,以至于必须对很多标记逻辑进行编码 样本掩码可以是: PROD-LOC-STATE-CITY PROD-DEST-STATE-ZIP PROD-OZIP-DZIP-VER-INS 示例字符串: Cooldo-GROUND-NYC-10082 示例代码: String[] arr = input.split("-"); int pos = 0;

我有几个字符串,其中包含多个掩码。我想知道有没有更好的方法来处理掩码解析字符串,而不是String.Spit和循环标记和标识序列等。这段代码也变得很笨拙,以至于必须对很多标记逻辑进行编码

样本掩码可以是:

  • PROD-LOC-STATE-CITY
  • PROD-DEST-STATE-ZIP
  • PROD-OZIP-DZIP-VER-INS
  • 示例字符串:

  • Cooldo-GROUND-NYC-10082
  • 示例代码:

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

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

    您可以使用正则表达式组按组名获取目标字符串。检查这个

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


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

    如果你想知道这到底意味着什么,请看这里()

    一个流行的java软件包是JFlex(),但是还有很多其他的软件包,只需谷歌搜索它就可以获得最好的结果


    祝您好运

    向我们展示您的代码,告诉我们它应该做什么,以及为什么您觉得它很笨拙。您是否考虑过使用正则表达式来定义不同的格式,例如prod、ozip、dzip……我正在研究regex类型,请参见命名组是新jdk 7的一部分!:(
    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);
    }