java - 基于mask的字符串解析

标签 java

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

示例掩码可以是:

  1. 产品地点州城市
  2. PROD-DEST-STATE-ZIP
  3. 产品-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++;
}

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

最佳答案

您可以使用正则表达式组通过组名称获取目标字符串 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/

相关文章:

java - 如何使用正则表达式分割字符串并插入到ArrayList中?

JAVA : Strurggling with connecting my class methods to my main

java - 在 java webservice 客户端中重写 XMLGregorianCalendar 类的 XML 绑定(bind)

java - TableView getSelectedIndex 返回异常值

java hasNext 方法用于检查扫描仪是否有更多标记

java - 登录无法使用登录表单

java - TestNG-将参数传递给构造函数,其中参数根据测试名称决定

Java 使用 Xbox Controller

java - 无法从客户端进行 JAX-RPC Web 服务调用

java - 如何在java中显示连接表?