大家好我想从这个字符串中只提取第一个字母:
String str = "使 徒 行 傳 16:31 ERV-ZH";
我只想得到这些字符:
使 徒 行 傳
而不包括
ERV-ZH
只有数字前面的字母或字符加冒号。
请注意,中文字母也可以是英文字母和其他字母。
这是我尝试过的:
str.split(" ")[0];
但我只收到第一封信。你知道如何达到我的要求吗?任何帮助将不胜感激。感谢。
注意:
此外,字符串是动态的,所以我只提供了样本字符。
答案 0 :(得分:3)
这应该为您提供所需的输出
String str = "使 徒 行 傳 16:31 ERV-ZH";
String[] test = str.split("\\d\\d:\\d\\d");
for (String s : test) {
System.out.println(s);
}
第一个元素将是时间之前的部分,依此类推
修改:如果您需要在6:31
或16:6
等时间更加动态,那么您可以使用此正则表达式"\\d{1,2}:\\d{1,2}"
答案 1 :(得分:0)
您可以使用以下正则表达式^([\\D\\s]+)
,这就是您所需要的:
String str = "使 徒 行 傳 16:31 ERV-ZH";
String pattern = "^([\\D\\s]+)";
Pattern r = Pattern.compile(pattern);
Matcher m = r.matcher(str);
if (m.find( )) {
System.out.println("Found value: " + m.group(0) );
} else {
System.out.println("NO MATCH");
}
}
这是 live DEMO 。
在以下正则表达式^([\\D\\s]+)
中:
^
只会在begginnig中匹配。
\\D
将避免匹配任何数字。
注意这将是任何字符串的情况。
答案 2 :(得分:0)
如果您不总是有日期模式可以在中间使用分隔符,并且正在寻找更通用的解决方案,那么您可以使用:{{ 1}}