replaceAll
忽略大小写很简,使用正则就可以实现
1
| String s = "Hello word".replaceAll("(?i)hello","你好");
|
忽略全角半角就需要自己实现了,实现思路是把原字符串、要匹配的字符串全部转换成半角(全角),然后对转换后的字符串做 indexOf,得到 index 之后替换原字符串。
1 2 3 4 5 6 7 8 9 10 11
| public static String replaceAllIgnoreHalfFull(String source, String toReplace, String replacement) { StringBuilder sbSource = new StringBuilder(source); StringBuilder sbSourceHalf = new StringBuilder(StringUtils.fullToHalf(source)); String searchString = StringUtils.fullToHalf(toReplace); int idx = 0; while((idx = sbSourceHalf.indexOf(searchString, idx)) != -1) { sbSource.replace(idx, idx + searchString.length(), replacement); idx += searchString.length(); } return sbSource.toString(); }
|
split
原理和上面一样
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| public static List<String> split(String source,String separator){ StringBuilder sbSourceHalf = new StringBuilder(StringUtils.fullToHalf(source)); String separatorStr = StringUtils.fullToHalf(separator); int len = separatorStr.length(); int idx = 0; int termStart = 0; List<String> ret = new ArrayList<>(); while((idx = sbSourceHalf.indexOf(separatorStr, idx)) != -1) { String term = source.substring(termStart,idx); ret.add(term); idx += separatorStr.length(); termStart = idx; }
ret.add(source.substring(termStart)); return ret; }
|