如何在 Java 中的非字母标记后 trim 子串
How to trim substrings after a non-letter token in Java
我有一个字符串。在我的代码中,如果有的话,我试图在非字母标记之后 trim 子字符串。您认为这样做的更好方法是什么?
我尝试使用正则表达式拆分、替换所有函数和匹配函数,但无法提供好的解决方案。
String initialString = "Brown 1fox jum'ps over 9 the_t la8zy dog.";
String[] splitString = initialString.split(" ");
String finalString= new String();
for (int i = 0; i < splitString.length; i++) {
finalString+=splitString[i].split("[^a-zA-Z]",2)[0]+" ";
}
finalString=finalString.trim().replaceAll("\s+", " ");
实际结果(如预期): "Brown jum over the la dog"
你只需要这样做,
String initialString = "Brown 1fox jum'ps over 9 the_t la8zy dog.";
String resultStr = Stream.of(initialString.split(" "))
.map(s -> s.replaceAll("[^A-Za-z].*", ""))
.filter(s -> !s.isEmpty())
.collect(Collectors.joining(" "));
作为替代方案,您可以使用 [^a-zA-Z ]+\S*
用空字符串替换匹配项,然后使用 \s{2,}
将双空格字符替换为单个字符
String string = "Brown 1fox jum'ps over 9 the_t la8zy dog.";
String result = string.replaceAll("[^a-zA-Z ]+\S*", "").replaceAll("\s{2,}", " ");
我有一个字符串。在我的代码中,如果有的话,我试图在非字母标记之后 trim 子字符串。您认为这样做的更好方法是什么?
我尝试使用正则表达式拆分、替换所有函数和匹配函数,但无法提供好的解决方案。
String initialString = "Brown 1fox jum'ps over 9 the_t la8zy dog.";
String[] splitString = initialString.split(" ");
String finalString= new String();
for (int i = 0; i < splitString.length; i++) {
finalString+=splitString[i].split("[^a-zA-Z]",2)[0]+" ";
}
finalString=finalString.trim().replaceAll("\s+", " ");
实际结果(如预期): "Brown jum over the la dog"
你只需要这样做,
String initialString = "Brown 1fox jum'ps over 9 the_t la8zy dog.";
String resultStr = Stream.of(initialString.split(" "))
.map(s -> s.replaceAll("[^A-Za-z].*", ""))
.filter(s -> !s.isEmpty())
.collect(Collectors.joining(" "));
作为替代方案,您可以使用 [^a-zA-Z ]+\S*
用空字符串替换匹配项,然后使用 \s{2,}
String string = "Brown 1fox jum'ps over 9 the_t la8zy dog.";
String result = string.replaceAll("[^a-zA-Z ]+\S*", "").replaceAll("\s{2,}", " ");