繁体   English   中英

如何使用多个定界符分割具有不同值的字符串?

[英]How to split string which has different values with multiple delimiters?

有人可以给我下面的正则表达式建议吗?

例如: city^chennai|country^India~TamilNadu|pincode^600034

预期的定界字符串为:

city
chennai
country
India,TamilNadu
pincode
600034

注意: ~应转换为,

~替换为逗号后,仅拆分非单词字符(不包括逗号):

input.replaceAll("~",",").split("[^\\w,]");

然后(根据需要映射的注释)成对迭代结果数组,添加映射项。

这是一些测试代码:

public static void main( String[] args ) {
    String input = "city^chennai|country^India~TamilNadu|pincode^600034";
    String[] things = input.replaceAll( "~", "," ).split( "[^\\w,]" );
    Map<String, String> map = new HashMap<String, String>( );
    for (int i = 0; i < things.length; i+=2) {
        map.put(things[i], things[i+1]);
    }
    System.out.println( map );
}

输出:

{pincode=600034, country=India,TamilNadu, city=chennai}
((w+)[|^~])*(w+)

编辑:现在我注意到它就像地图,所以也许:

((w+)^(w+)|)*(w+)^(w+)

将w +替换为[...]自定义类,以使〜也可以使用。

Pattern p = Pattern.compile("((w+)^(w+)|)*(w+)^(w+)");
 Matcher m = p.matcher("city^chennai|country^India~TamilNadu|pincode^600034");
 if( m.matches() ){
     for( int i = 1; i < m.groupCount(); i+=2 ) {
         // m.group(i) and m.group(i+1) gives you the values.
     }
 }

如果您想要更简单的方法,请使用Pattern#split("")

http://docs.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html#split%28java.lang.CharSequence%29

您可以使用以下命令:

.replaceAll("~", ",").split("[|^]")

假设字符串已正确拆分,则可以通过将索引2k处的字符串映射到索引(2k +1)将它们分组为名称/值对。

您可以在此处使用StringTokenizer类使用不同的定界符分割字符串。 使用hasNextToken("delimiterHereAsString")方法可以指定要分割的不同分隔符。

该链接可能会对您有所帮助。 http://www.java-examples.com/java-stringtokenizer---specify-delimiter-example

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM