一、spilt分割字符串
String str = "2134|678.654";
// 此处的参数regex是指规则表达式的意思,要注意在该方法中使用了转义字符,而不是正则表达式
// 此转义字符非彼转义字符,这里的转义字符是方法内部对某几个字符进行了特殊识别
// 这里的转义字符包含|和.,仅限split|replaceFirst|replaceAll方法中
// 平时说的java转义字符,是指\t\n\\\s等
// 表示这是一个整体符号,制表换行空格的意思,在整个java语言里面通用
String[] strArr1 = str.split("1");
System.out.println(Arrays.toString(strArr1));
// |表示将字符串以单个字符分割
String[] strArr2 = str.split("|");
System.out.println(Arrays.toString(strArr2));
// .表示整体分割掉,最后返回空数组
String[] strArr3 = str.split(".");
System.out.println(Arrays.toString(strArr3));
// \\|表示以|分割字符串
String[] strArr4 = str.split("\\|");
System.out.println(Arrays.toString(strArr4));
// \\.表示以.分割字符串
String[] strArr5 = str.split("\\.");
System.out.println(Arrays.toString(strArr5));
二、replace方法的的使用
1.replace的使用
String str = "1234567890";
// replace的参数是字符或字符串,而不是规则或正则表达式
// replace是替换字符串中所有的字符(串)为另一个字符(串)
// replace之后,要赋值给原先的字符串,因为原先的字符串没变
str = str.replace('5', '|');
System.out.println(str);
str = str.replace("34", "..");
System.out.println(str);
2.replaceFirst的使用
String str = "123|456|789.0";
// replaceFirst也是用到了规则表达式
// .表示任意字符
// replaceFirst替换第一个匹配的字符
str = str.replaceFirst(".", "*");
// 实现了替换任意的第一个字符
System.out.println(str);
// |实际效果是在字符串前面加了字符串
str = str.replaceFirst("|", "12345");
System.out.println(str);
// 使用\\|真正实现了替换第一个|
str = str.replaceFirst("\\|", ".");
System.out.println(str);
// 真正\\.实现了替换第一个.
str = str.replaceFirst("\\.", "-");
System.out.println(str);
3.replaceAll的使用
String str = "123|465.789|987.654|321";
// 实现效果.表示替换所有符号为*
System.out.println(str.replaceAll(".", "*"));
// 实现效果,仅替换所有.为*
System.out.println(str.replaceAll("\\.", "*"));
// 实现效果,每两个符号间插入了|
System.out.println(str.replaceAll("|", "*"));
// 实现效果,仅替换所有的|为*
System.out.println(str.replaceAll("\\|", "*"));
三、总结
replace不存在规则表达式的问题。
split和replaceFirst以及replaceAll存在.和|转义,只有前面加上\\,即\\.和\\|,才能表达原先的分割和替换的含义。
.在split中是把整个字符串分割掉,最后的结果是返回空数组。
|在split中是把整个字符串的每个字符都分割出来。
.在replaceFirst中是替换任意的首字符。
|在replaceFirst中是在字符串前面加上了替换后的字符。
.在replaceAll中是替换任意的所有字符。
| 在replaceAll中是在每个字符前后加上了替换后的字符。
split和replaceFirst以及replaceAll中将字符串中每个字符前后以|分割开来进行操作,以降低算法的时间复杂度,这样在以|分割或替换时,就会发生上述场景。
换句话说,split等函数在操作1234567890字符串时,实际操作的是|0|1|2|3|4|5|6|7|8|9|0|字符串。