Java 基于掩码的字符串解析
我有几个字符串,其中包含多个掩码。我想知道有没有更好的方法来处理掩码解析字符串,而不是String.Spit和循环标记和标识序列等。这段代码也变得很笨拙,以至于必须对很多标记逻辑进行编码 样本掩码可以是: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[] 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);
}