首页 > 解决方案 > 如何在Java中的非字母标记之后修剪子字符串

问题描述

我有一个字符串。在我的代码中,如果有的话,我试图在非字母标记之后修剪子字符串。你认为有什么更好的方法来做到这一点?

我尝试使用正则表达式拆分、替换所有函数和匹配函数,但无法提供一个好的解决方案。

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”

标签: regexjava-8splittrim

解决方案


作为替代方案,您可以使用[^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,}", " ");

演示


推荐阅读