Java通过冒号在两侧拆分字符串
你能给我建议一种方法,我可以用它来分割一个字符串,就像:Java通过冒号在两侧拆分字符串,java,regex,Java,Regex,你能给我建议一种方法,我可以用它来分割一个字符串,就像: :31C:150318 :31D:150425 IN BANGLADESH :20:314015040086 所以我试着用 :[A-za-z]|\\d: 这是一种正则表达式,但它不起作用。请给我推荐一个正则表达式,我可以用它来拆分字符串,其中20、31C、31D等作为键,150318、150425(孟加拉国)等作为值 如果我使用string.split(“:”),那么它将无法达到我的目的。 如果字符串类似于: :31C:15031
:31C:150318
:31D:150425 IN BANGLADESH
:20:314015040086
所以我试着用
:[A-za-z]|\\d:
这是一种正则表达式,但它不起作用。请给我推荐一个正则表达式,我可以用它来拆分字符串,其中20、31C、31D等作为键,150318、150425(孟加拉国)等作为值
如果我使用string.split(“:”),那么它将无法达到我的目的。
如果字符串类似于:
:31C:150318
:31D:150425 IN BANGLADESH
:20:314015040086
字体20:我的价值观在这里
然后将其拆分为3个字符串,键20将与“我的值”关联,“在这里”将与键20不关联 尝试使用String类的split函数
String[] splited = string.split(":");
根据您的要求:
String c = ":31D:150425 IN BANGLADESH:todasdsa";
c=c.substring(1);
System.out.println("C="+c);
String key= c.substring(0,c.indexOf(":"));
String value = c.substring(c.indexOf(":")+1);
System.out.println("key="+key+" value="+value);
结果:
C=31D:150425 IN BANGLADESH:todasdsa
key=31D value=150425 IN BANGLADESH:todasdsa
您可以使用以下方法进行拆分:
^[:]+([^:]+):
您可以使用匹配机制而不是拆分,因为您需要匹配字符串中的特定冒号 在第一个冒号和第二个冒号之间获得2个组并在第二个冒号之后捕获所有内容的正则表达式如下所示
^:([^:]*):(.*)$
看。^
将断言字符串的开头,([^:]*)
将匹配并捕获到组1中除:
以外的零个或多个字符,(.*)
将匹配并捕获到组2中字符串的其余部分$
将断言单行字符串末尾的位置(因为
匹配任何符号,但不匹配不带Pattern.DOTALL
修饰符的换行符)
此演示的结果:
Key:20,Value:AND:HERE
在stringRegex上使用字符串类拆分函数作为拆分(“:”),应该是这样的:([A-za-z0-9]+):(.+)
或此::([A-za-z0-9]{2,3}):(.+)
请解释您试图获得的最终输出,解密键20将与之关联“我的值”和“在这里”不会与键20关联。你的意思是你只需要按第二个:
?看一下@michal.svec:WOW!!太棒了!!效果很好!谢谢老板。:)是的,我试过了,但是如果字符串像::20:我的值:在这里,那么你只想按第二个拆分::“如果我使用string.split(:”),那么它将无法达到我的目的。如果一个字符串像::20:MY VALUES:ARE HERE,那么它将拆分为3个字符串,键20将与“MY VALUES”关联,“ARE HERE”将与键20不关联。