有关String里把回车替换成\n的问题?

jinsanqi 2003-06-06 04:37:10
我的jsp页面读取了一个xml文件.
<a>
<b>
内容有回车
是啊
</b>
</a>
我把这个文件读到一个string变量里面.本来这样没什么问题/
问题在于我要把这个变量的值赋给一个js变量.
如果我原封不动的赋的话,比如
var v='<%=s%>';
那么实际网页输出的时候会变成:
var v='<a>
<b>
内容有回车
是啊
</b>
</a>';
可想而知这个v变量是错误的,于问我想把这个s变量里的回车符先替换成\n.
在ACCP的指点下,我用以下方法实现:
String newline = System.getProperty("line.separator");//这是回车
s= detail.replaceAll(newline,"\\\\n");
//这一步是因为<b>里面的内容会有两个\n\n,不知道什么原因???
s= strtmp.replaceAll("\\\\n\\\\n"," \\\\n");
虽然做到了,但是疑问多多:
1.为什么要\\\\n才能替换成一个\n符.java里到底是怎么实现替换的?
2.以前学c的时候知道回车是ask码的13+10那么我的\n真是就代码回车了吗?因为当我的一个AcxtiveX控件读取的时候,会变成一个"|"符号,而且,仔细看你们会发现,第二次替换的时候我是用" \\\\n"的,比"\\\\n"多了个空格,如果不这样,显示的时候居然会把前一个字给吃掉一半.
请教高手给予详细解说,谢谢!
...全文
1021 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
hlding 2003-06-10
  • 打赏
  • 举报
回复
利用正则表达式吧,很简单的
dooby 2003-06-10
  • 打赏
  • 举报
回复
我碰上过这种问题,就是把\r\n替换成\n
如果你是用java代码把字符串响应回去的就无所谓,但是你现在先组装成javascript就会有问题
xcopy 2003-06-10
  • 打赏
  • 举报
回复
\在javascript里表示转行,下一行还当当前行对待,这样字符串就不会被中止了.
xcopy 2003-06-10
  • 打赏
  • 举报
回复
可以的就是把
var v='<a>
<b>
内容有回车
是啊
</b>
</a>';
变成
var v='<a>\
<b>\
内容有回车\
是啊\
</b>\
</a>';
不过要用正则表达式,需要jdk1.4以上
jinsanqi 2003-06-06
  • 打赏
  • 举报
回复
楼上的你这样不行吧?
读出来的XML怎么随便改动呢?
你能告诉我为什么要用\\\\n才能代码一个\n字符吗?

to beyond_xiruo:
大哥,替换成<br>可就变成HTML标签了,拜托,这样没用的.
xcopy 2003-06-06
  • 打赏
  • 举报
回复
也可以改成这样子,还便于阅读.
var v='<a>\
<b>\
内容有回车\
是啊\
</b>\
</a>';
这样实现
s=s.replaceAll("[\\r\\n]+","\\\\n");
[\\r\\n]+ 表示所有的回车换行
希偌 2003-06-06
  • 打赏
  • 举报
回复
replaceAll("[\n]","<br>");
hugeship2002 2003-06-06
  • 打赏
  • 举报
回复
windows的回车是\r\n吧,你改成这个try一下
tanghuan 2003-06-06
  • 打赏
  • 举报
回复
你知道转义吗。\\实际上是前一个是转义字符,表示后一个字符不是他通常的含义。
在C或JAVA中\的通常含义就是转移字符,\\表示他后一个\不是通常的含义,那他就是\本身了。还比如\n,表示后一个n不是通常的含义n这个字符,而是表示回车换行。

类似的有很多:\t,\u088等等。

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧