如何使用java解析/清理字符串?
输入:“软件工程”
期望输出:“软件工程师”
我有这个正则表达式:"([a-z])\s([a-z])"
。它可以找到字符串"t w"
和"i n"
。但是如何替换搜索到的字符串之间的空间?
System.out.println("Soft ware Engi neer".trim().replace("([a-z])\\s([a-z])", "$1$2"));
应打印:Software Engineer
上面的regex / replace在Notepad ++中工作正常。
答案 0 :(得分:1)
将正则表达式与a lookahead and a lookbehind一起使用,并用空字符串替换空格:
System.out.println("Soft ware Engi neer".replaceAll("(?<=[a-z])\\s(?=[a-z])", ""));
此正则表达式匹配单个空格,前面是和,后跟一个小写字符。字符本身不包含在内。
答案 1 :(得分:0)
将方法调用替换为replaceAll
有效。
System.out.println("Soft ware Engi neer".trim().replaceAll("([a-z])\\s([a-z])", "$1$2"));