Java Split String两边都是冒号

时间:2015-09-22 08:53:56

标签: java regex

你能建议我一种方法,我可以分割一个字符串,如:

:31C:150318 
:31D:150425 IN BANGLADESH
:20:314015040086

所以我尝试用

解析该字符串
:[A-za-z]|\\d: 

这种正则表达式,但它不起作用。请建议我一个正则表达式,我可以用20,31C,31D等将该字符串拆分为Keys,将150318,150425 IN BANGLADESH等拆分为值。

如果我使用string.split(“:”)那么它就无法实现我的目的。 如果字符串如下:

:20:我的价值观:在这里

然后它将分成3个字符串,并且键20将与“我的价值观”相关联,并且“在这里”将不与键20相关联。

3 个答案:

答案 0 :(得分:2)

您可以使用匹配机制而不是拆分,因为您需要匹配字符串中的特定冒号。

正则表达式在第一个和第二个冒号之间获得2个组并且在第二个冒号之后捕获所有内容将看起来像

^:([^:]*):(.*)$

demo^将声明字符串的开头,([^:]*)将匹配并捕获到第1组中除:以外的零个或多个字符,(.*)将匹配并捕获到组中2其余的字符串。 $会在单行字符串的末尾声明位置(.匹配任何符号,但不包含Pattern.DOTALL修饰符的换行符。

String s = ":20:AND:HERE";
Pattern pattern = Pattern.compile("^:([^:]*):(.*)$");
Matcher matcher = pattern.matcher(s);
while (matcher.find()){
    System.out.println("Key: " + matcher.group(1) + ", Value: " + matcher.group(2) + "\n"); 
} 

此演示的结果:Key: 20, Value: AND:HERE

答案 1 :(得分:0)

尝试使用String类的split函数

public void onBufferingUpdate(MediaPlayer mp, int percent)

根据您的要求:

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);

答案 2 :(得分:0)

您可以使用以下内容进行拆分:

^[:]+([^:]+):