java将符合特征的尾缀词去除忽略大小写全角半角
时间: 2024-02-27 15:52:00 浏览: 157
如果需要在Java中将符合特征的尾缀词去除,并且忽略大小写、全角和半角的差异,可以结合前面介绍的方法,将字符串先转为统一的格式,再进行匹配和替换。
以下是一个Java代码示例,演示如何在忽略大小写、全角和半角的情况下去除字符串中符合特征的尾缀词:
```java
public static String removeSuffix(String str, String pattern) {
if (str == null || pattern == null) {
return str;
}
// 将字符串转为统一格式(半角、小写)
str = StringUtil.toHalfWidth(str);
pattern = pattern.toLowerCase();
// 构造正则表达式模式
String regex = "(?i)" + pattern + "$"; // 忽略大小写匹配尾缀词
// 去除尾缀词
str = str.replaceAll(regex, "");
// 将字符串转回原格式
str = StringUtil.toOriginalWidth(str);
return str;
}
/**
* 将字符串中的全角字符转为半角字符
*/
public static String toHalfWidth(String str) {
if (str == null) {
return null;
}
char[] chars = str.toCharArray();
for (int i = 0; i < chars.length; i++) {
// 全角空格
if (chars[i] == 12288) {
chars[i] = (char) 32;
continue;
}
// 其他全角字符(除空格外),都和对应的半角字符相差65248
if (chars[i] > 65280 && chars[i] < 65375) {
chars[i] = (char) (chars[i] - 65248);
}
}
return new String(chars);
}
/**
* 将字符串中的半角字符转为全角字符
*/
public static String toOriginalWidth(String str) {
if (str == null) {
return null;
}
char[] chars = str.toCharArray();
for (int i = 0; i < chars.length; i++) {
// 半角空格
if (chars[i] == 32) {
chars[i] = (char) 12288;
continue;
}
// 其他半角字符(除空格外),都和对应的全角字符相差65248
if (chars[i] < 127) {
chars[i] = (char) (chars[i] + 65248);
}
}
return new String(chars);
}
```
示例中,`removeSuffix()`方法使用了`StringUtil.toHalfWidth()`和`StringUtil.toOriginalWidth()`方法,将字符串先转为半角、小写格式,然后去除尾缀词,最后再转回原格式。这样可以忽略全角和半角的差异,同时也忽略大小写。如果不需要忽略全角和半角的差异,可以省略`toHalfWidth()`和`toOriginalWidth()`方法。
阅读全文