regex - 如何在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”
解决方案
作为替代方案,您可以使用[^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,}", " ");
推荐阅读
- javascript - 如何从此嵌套对象数组中获取最大的 category_id?
- material-ui - 如果它被全局设置覆盖,如何强制执行 MUI 样式?
- c - gtk/gtk.h:没有这样的文件或目录 Windows
- c++ - 从“name”、number 到模板处理函数的高效调度
- vue.js - 调试 Vue TypeError:无法读取未定义的属性“名称”
- javascript - 如何在 3 秒后让一个块出现在页面上?CSS
- c# - 如何在 c# 中跳过空布尔值?
- reactjs - 如何使用样式组件创建自定义属性名称?
- rust - 如何向上转换 Rc
- java - 在 Java 7 上使用 OkHttpClient v3.12.x 时无法解析类型 java.time.Duration