【发布时间】:2020-11-11 14:22:45
【问题描述】:
我想替换字符串中的所有非单词字符,但我需要检查单词中是否包含连字符,但替换会删除连字符。 有没有办法在我替换所有不是字母的东西后做到这一点,还是在替换之前我必须检查?
这是我的代码
word = word.replaceAll("[^a-zA-Z]", "").toLowerCase();
【问题讨论】:
标签: java
我想替换字符串中的所有非单词字符,但我需要检查单词中是否包含连字符,但替换会删除连字符。 有没有办法在我替换所有不是字母的东西后做到这一点,还是在替换之前我必须检查?
这是我的代码
word = word.replaceAll("[^a-zA-Z]", "").toLowerCase();
【问题讨论】:
标签: java
使用正则表达式 [^\w-] 表示 NOT(word character 或 -)。
public class Main {
public static void main(String[] args) {
// Test
String word = "Hello :) Hi, How are you doing? The Co-operative bank is open 2day!";
word = word.replaceAll("[^\\w-]", "").toLowerCase();
System.out.println(word);
}
}
输出:
hellohihowareyoudoingtheco-operativebankisopen2day
请注意,单词字符(即\w)包括A-Za-z0-9_。如果您希望您的正则表达式最多限制为字母和连字符,您应该使用[^A-Za-z\-]
public class Main {
public static void main(String[] args) {
// Test
String word = "Hello :) Hi, How are you doing? The Co-operative bank is open 2day!";
word = word.replaceAll("[^A-Za-z\\-]", "").toLowerCase();
System.out.println(word);
}
}
输出:
hellohihowareyoudoingtheco-operativebankisopenday
【讨论】:
我需要检查单词中是否有连字符,但替换会删除连字符
所以在去除非字母字符之前检查是否有连字符。
if(word.contains("-")) {
//do whatever
}
//remove non-alpha chars
【讨论】: