Java只从String中提取第一个字母/字符

时间:2015-07-31 10:38:30

标签: java regex string

大家好我想从这个字符串中只提取第一个字母:

  String str = "使 徒 行 傳 16:31 ERV-ZH";

我只想得到这些字符:

  使 徒 行 傳

而不包括

   ERV-ZH

只有数字前面的字母或字符加冒号。

请注意,中文字母也可以是英文字母和其他字母。

这是我尝试过的:

str.split(" ")[0];

但我只收到第一封信。你知道如何达到我的要求吗?任何帮助将不胜感激。感谢。

注意:

此外,字符串是动态的,所以我只提供了样本字符。

3 个答案:

答案 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:3116: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}}