如何转义英文单引号
public class test {
public static void main(String[] args) {
String s = new String("阿'哦");
s.replaceAll("\'","\\\'");
System.out.println(s);
}
}
我想把s中的英文单引号,转义为反斜杠加单引号。也就是说转为"啊\'哦"。如何实现?
问题点数:20、回复次数:20Top
1 楼buzhiming99(不知名)回复于 2004-12-01 16:16:26 得分 0
s1.replaceAll("\\'","\\\\\'")Top
2 楼treeroot(旗鲁特)回复于 2004-12-01 16:21:36 得分 0
是替换吧,怎么叫转义??
replaceAll("'","\\\\'");Top
3 楼thomas_20(执子之手,与子偕老)回复于 2004-12-01 16:21:39 得分 0
s = s.replaceAll("\'","\\\\'");Top
4 楼crane_hit(柳絮)回复于 2004-12-01 16:21:58 得分 20
很简单,就拿你这份代码来说吧:
多加一个“\\”,然后接收一下replaceAll()的返回值就行了。
public class test {
public static void main(String[] args) {
String s = new String("阿'哦");
s=s.replaceAll("\'", "\\\\\'");
System.out.println(s);
}
}
Top
5 楼thomas_20(执子之手,与子偕老)回复于 2004-12-01 16:22:16 得分 0
s = s.replaceAll("\'","\\\\'");Top
6 楼wangjm02(otter)回复于 2004-12-01 16:30:33 得分 0
s=s.replaceAll("'", "\\\\'");Top
7 楼zhaohao19853(小人物)回复于 2004-12-01 16:48:05 得分 0
后面第2个参数的内容,为什么我打一个\符号,不行呢?
高手解释一下,谢谢了Top
8 楼chenglu123(斯科尔斯)回复于 2004-12-01 16:50:51 得分 0
谢谢crane_hit(柳絮)的帮助,搞号了
wangjm02(otter)、treeroot(根根)两位,能不能自己试试先,再过来回帖呀,都是错的。Top
9 楼songwei76(笑笑)回复于 2004-12-01 16:55:17 得分 0
哇,真细致啊。借问,是什么道理呢?Top
10 楼chenglu123(斯科尔斯)回复于 2004-12-01 16:55:54 得分 0
因为\是特殊的字符,本身是个转义字符,所以需要转义的。否则电脑怎么知道你打\,是为了转义还是显示\。(\n,\t,\r)(换行,tab,回车)Top
11 楼songwei76(笑笑)回复于 2004-12-01 20:04:22 得分 0
呵呵,这个我还知道。就是不明白为什么后来多了两个\\Top
12 楼kigoqzw(大号睡衣)回复于 2004-12-01 20:52:04 得分 0
s=s.replaceAll("\'", "\\\\\'");
第二个参数前两个斜杠为那个斜杠转义,剩下的两个斜杠就是为最后一个单引号准备的!Top
13 楼chenglu123(斯科尔斯)回复于 2004-12-02 07:44:58 得分 0
songwei76(笑笑) :我说的那些不是回答你的提问的,不好意思,让你误解了。
我很想问一下,为什么
s=s.replaceAll("\'", "\\\\\'");
s=s.replaceAll("\'","\\\\'");
都可以执行且都能得出正确的答案。如果第二种是 kigoqzw(大号睡衣)的那种解释,那第一种怎么理解呢?Top
14 楼YOUTAO89()回复于 2004-12-02 09:38:07 得分 0
应该这样:去掉 \.
public class test {
public static void main(String[] args) {
String s = new String("阿'哦");
s.replaceAll("\'","\\'");
System.out.println(s);
}
}
Top
15 楼fog628(无名)回复于 2004-12-02 10:30:10 得分 0
System.out.println("\\'".equals("\\\'")); //结果为true
System.out.println("\\'".equals("\\'")); //结果为trueTop
16 楼chenglu123(斯科尔斯)回复于 2004-12-03 10:02:51 得分 0
to: YOUTAO89()
发言前请先试试看,你那个肯定是错的。你可能还根本不知道replaceAll()其实是调用政则表达式的吧!
Top
17 楼treeroot(旗鲁特)回复于 2004-12-03 10:45:21 得分 0
单引号为什么要转义?Top
18 楼treeroot(旗鲁特)回复于 2004-12-03 10:56:38 得分 0
搂主为何说我的不对?
六种写法都是对的
1.s.replaceAll("'","\\\\'");
2.s.replaceAll("'","\\\\\'");
3.s.replaceAll("\'","\\\\'");
4.s.replaceAll("\'","\\\\\'");
5.s.replaceAll("\\'","\\\\'");
6.s.replaceAll("\\'","\\\\\'");
很显然第一种写法最简洁。Top
19 楼treeroot(旗鲁特)回复于 2004-12-03 11:06:23 得分 0
谢谢crane_hit(柳絮)的帮助,搞号了
wangjm02(otter)、treeroot(根根)两位,能不能自己试试先,再过来回帖呀,都是错的。
真实无法忍受搂住的态度,自己的程序错了,还信口开河。
看看你的程序:
public class test {
public static void main(String[] args) {
String s = new String("阿'哦");
s.replaceAll("\'","\\\'");//这一句不可能改变s的值,应该是s=s.repla.....
System.out.println(s);
}
}
我还觉得奇怪呢,我怎么会连这样的题都弄错,还误人子弟,我一般没有十足的把握都不会回答的,而且我一般都会先测试通过的。Top
20 楼chenglu123(斯科尔斯)回复于 2004-12-03 15:54:50 得分 0
treeroot(根根):首先谢谢你,我说那句没有别的意思,因为那时候搞很久都没有搞好,所以用词不妥。我承认“s.replaceAll("\'","\\\'")”这个地方是我写错了,所以我怎么搞不好,所以才来发帖子。但是你回的帖子我放进我的代码试了,没有成功啊!我当然会认为你的代码是错的啦!(难道你测了我的代码了嘛?测了还会这样回嘛?)。这个问题也没有再讨论的价值了。Top




