黑马程序员技术交流社区
标题:
一组关于String字符串的综合问题?
[打印本页]
作者:
tanlei200620
时间:
2012-2-21 16:38
标题:
一组关于String字符串的综合问题?
在实验一些东西的时候得到的很怪的结果,不懂原理,求教:代码如下:
String s = "AA";
System.out.println(s);//打印原先的字符串,便于比较
System.out.println(s.replaceAll("", "谭"));//被替换的东西是空格。
s = "\\AA";
System.out.println(s);
//想将字符串 s 中的单个反斜杠 替换为两个,想在处理一些字符串时使用,比如用户通过控制台输入的字符串。即使没有人工处理仍可正常打印
//System.out.println(s.replaceAll("\\", "\\\\")); 编译失败
System.out.println(s.replaceAll("\\\\", "\\\\")); //没有达到效果
System.out.println(s.replaceAll("\\\\", "\\\\\\\\")); //达到预期效果。
System.out.println(s.replaceAll("\\A", "谭")); //这句代码连我自己也不知道是什么意思,不过出了个很怪的结果。还有为什么加上一个其他的内容就能通过编译,单纯用 "\\"就无法通过编译。
可是出现很奇怪的结果。
s = "";
System.out.println(s.replaceAll("", "谭"));
s = "aaa";
String[] temp = s.split("");
for(String t: temp){
System.out.println(t);
}
程序运行结果如下:
AA
谭A谭A谭
\AA
\AA
\\AA
谭\AA
谭
a
a
a
作者:
陈丹阳
时间:
2012-2-21 17:07
java replaceAll() 方法要用 4 个反斜杠,表示一个反斜杠
例如 str1="aa\bbb"; str2="aa'bbb";
要想替换成 str1="aa\\bbb";str2="aa\'bbb";
必须这样替换:
str1 = str1.replaceAll("\\\\", "\\\\\\\\");
str2 = str2.replaceAll("'", "\\\\'");
原因如下:
String 的 replaceAll() 方法,实际是采用正则表达式的规则去匹配的,
\\\\ ,java解析为\\交给正则表达式, 正则表达式再经过一次转换,把\\转换成为\
也就是java里面要用正则来表示一个\. 必须写成4个\
如果要表示\\,那就要写8个\
所以如果写成: str1 = str1.replaceAll("\\", "\\\\");
就会报正则表达式的错误。
--------------------------------------------------------
以上内容来源网络,表示学习了
作者:
tanlei200620
时间:
2012-2-22 13:05
System.out.println(s.replaceAll("", "谭"));
System.out.println(s.replaceAll("\\A", "谭"));
String[] temp = s.split("");
主要是这些我不懂什么意思,就是编译器会怎么理解以上语句?求教上述信息
作者:
陈丹阳
时间:
2012-2-22 13:14
""你按空字符串的规则切切出来肯定是一个个的啊。
\\A代表\A 匹配输入的开头。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2