\\n
是否适用于所有平台的Java语言中的通用换行符序列? 如果不是,我如何确定当前环境的角色?
我不是在问HTML换行符( <BR/>
)。 我问的是JavaScript字符串中使用的换行符序列。
#1楼
是的,它是通用的。
尽管'\\n'
是通用换行符 ,但是必须记住,根据您的输入,换行符可能以回车符( '\\r'
) '\\r'
。
#2楼
是的,请使用\\ n,除非要生成要在其中使用<br />
html代码。
#3楼
我相信是-当您使用JS字符串时。
但是,如果要生成HTML,则必须使用<br />
标签(而不是\\n
,因为您不再使用JS了)
#4楼
我刚刚使用了一些愚蠢的JavaScript测试了一些浏览器:
function log_newline(msg, test_value) { if (!test_value) { test_value = document.getElementById('test').value; } console.log(msg + ': ' + (test_value.match(/\\r/) ? 'CR' : '') + ' ' + (test_value.match(/\\n/) ? 'LF' : '')); } log_newline('HTML source'); log_newline('JS string', "foo\\nbar"); log_newline('JS template literal', `bar baz`);
<textarea id="test" name="test"> </textarea>
Windows上的IE8和Opera 9使用\\r\\n
。 我测试过的所有其他浏览器(Windows上的Safari 4和Firefox 3.5,Linux上的Firefox 3.0)都使用\\n
。 设置值时,它们都可以很好地处理\\n
,尽管IE和Opera会在内部再次将其转换回\\r\\n
。 有SitePoint文章,其中有更多详细信息,称为Java中的行尾 。
还要注意,这与HTML文件本身中的实际行尾无关( \\n
和\\r\\n
给出相同的结果)。
提交表单时,所有浏览器都将URL编码中的换行符规范化为%0D%0A
。 为此,请加载例如data:text/html,<form><textarea name="foo">foo%0abar</textarea><input type="submit"></form>
并按提交按钮。 (某些浏览器阻止了已提交页面的加载,但是您可以在控制台中看到URL编码的表单值。)
不过,我认为您真的不需要做任何决定。 如果只想在换行符上分割文本,则可以执行以下操作:
lines = foo.value.split(/\r\n|\r|\n/g);
#5楼
电子邮件链接功能我使用“%0D%0A”
function sendMail() {
var bodydata="Before "+ "%0D%0A";
bodydata+="After"
var MailMSG = "mailto:aaa@sss.com"
+ "?cc=07@sss.com"
+ "&subject=subject"
+ "&body=" + bodydata;
window.location.href = MailMSG;
}
[HTML]
<a href="#" onClick="sendMail()">Contact Us</a>
来源:oschina
链接:https://my.oschina.net/stackoom/blog/3163688