你能建议我一种方法,我可以分割一个字符串,如:
: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相关联。
答案 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)
您可以使用以下内容进行拆分:
^[:]+([^:]+):