“23\56\78”.split(“\”) 无法按照\分割啊
解决方案
10
首先,你的字符串假如有\分隔符,不应该只有一个\,这是特殊字符,会被编码成其他东西
String s = “23\56\78” 才是正解
其次分隔方法如下:
String[] split = “23\56\78”.split(“\\”);
String s = “23\56\78” 才是正解
其次分隔方法如下:
String[] split = “23\56\78”.split(“\\”);
5
小弟,哥哥做了6年java了,不会骗你,\56\78这种东西会被转义成其它东西,你咋不懂呢,本人去断点看下吧,
不是说报错,就像String s= “\n” 代表回车是一个意思,那不是原来的字符串了,懂吗,你可以不用反斜杠做分隔符
例如竖线|也可以啊,不啰嗦了。
10
“\\”是一个很蛋疼的正则式,想表达的只是一个普通的\字符,但是为啥变成4个而不是2个”\”?
我们先看看”\.”,这里有个小点。
原因是”.”本身也是正则式特殊含义的,需要用\转义,但是我们用”\.”时,发现是不可行的,原因是””也是一个特殊的字符,也要对它进行转义,于是变成了”\.”
再回头看看””,这个本身就无法编译通过,原因是”会转义,导致我们的字符串少了一个”
那再加一个”\”,这时候编译不报错,但是此时的含义是“按照\这个特殊字符来分割字符串”,于是我们会发现运行时报错了。
那再加一个”\”, 好吧,编译失败,提示字符串又少了一个”
再加一个”\\” ,万事大吉。
因此,我们可以用这样的眼光看这四个斜杠杠:(\)(\)
第一个括号里的两个斜杠,转义成一个转义字符 斜杠1;第二个括号里的两个斜杠,也转义成一个转义字符 斜杠2,斜杠1和斜杠2在一起,斜杠1把斜杠2转义成普通字符了。
总结一下,假如想写的正则式里包含需要转义的字符,需要在其前面加一个普通字符\作为转义字符,而不是转义字符\本身。单独的\会作为一个计算符号,和后面紧跟的任意字符做转义操作,因此它不会作为字符串的一部分。
试试这行代码System.out.println(“\\”.length());
嗯,大致就这个意思了吧!
我们先看看”\.”,这里有个小点。
原因是”.”本身也是正则式特殊含义的,需要用\转义,但是我们用”\.”时,发现是不可行的,原因是””也是一个特殊的字符,也要对它进行转义,于是变成了”\.”
再回头看看””,这个本身就无法编译通过,原因是”会转义,导致我们的字符串少了一个”
那再加一个”\”,这时候编译不报错,但是此时的含义是“按照\这个特殊字符来分割字符串”,于是我们会发现运行时报错了。
那再加一个”\”, 好吧,编译失败,提示字符串又少了一个”
再加一个”\\” ,万事大吉。
因此,我们可以用这样的眼光看这四个斜杠杠:(\)(\)
第一个括号里的两个斜杠,转义成一个转义字符 斜杠1;第二个括号里的两个斜杠,也转义成一个转义字符 斜杠2,斜杠1和斜杠2在一起,斜杠1把斜杠2转义成普通字符了。
总结一下,假如想写的正则式里包含需要转义的字符,需要在其前面加一个普通字符\作为转义字符,而不是转义字符\本身。单独的\会作为一个计算符号,和后面紧跟的任意字符做转义操作,因此它不会作为字符串的一部分。
试试这行代码System.out.println(“\\”.length());
嗯,大致就这个意思了吧!
5
“23\56\78”.split(“\\”) 无法按照\分割啊
四个斜杠才正确!
四个斜杠才正确!