Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带新行的JavaScript字符串-但不使用\n_Javascript_String - Fatal编程技术网

带新行的JavaScript字符串-但不使用\n

带新行的JavaScript字符串-但不使用\n,javascript,string,Javascript,String,我有一个字符串,其中有新行。我想将它们转换为HTMLs,但我很难检测它们 想象一个JavaScript字符串集,如下所示: var foo = "Bob is cool"; //Note lack of terminating double quote var foo = "Bob var a = 'Hello', b = 'World'; console.log(`The computer says ${ a.toUpperCase() }, ${b}!`); // results in

我有一个字符串,其中有新行。我想将它们转换为HTML

s,但我很难检测它们

想象一个JavaScript字符串集,如下所示:

var foo = "Bob
is
cool";
//Note lack of terminating double quote
var foo = "Bob 
var a = 'Hello', b = 'World';
console.log(`The computer says ${ a.toUpperCase() }, ${b}!`);
// results in "The computer says HELLO, World!"

它们是我需要检测的新线路。它们没有使用
\n
特殊字符-它们只是普通格式。

检查
\n
\r
\r\n


新行有几种表示形式,请参见

我认为它们使用的是
\n
无论如何,甚至可能因为它不可见,或者它们使用的是
\r
。所以只要用

替换
\n
\r
,我想你不明白如何工作。结果字符串仍然只包含一个值为10的字节。这在javascript源代码中表示为\n


您发布的代码段实际上不起作用,但如果起作用,换行符将等同于\n,除非它是windows样式的换行符,在这种情况下,它将是\r\n。(但即使更换仍能工作)。

您可以使用以下功能:

  function nl2br (str, is_xhtml) {
     var breakTag = (is_xhtml || typeof is_xhtml === 'undefined') ? '<br />' : '<br>';
     return (str + '').replace(/([^>\r\n]?)(\r\n|\n\r|\r|\n)/g, '$1' + breakTag + '$2');
  } 
这应该提醒

另一行
另一行

该函数的来源如下:


这模仿了php中的
nl2br
函数…

它不起作用的原因是javascript字符串必须在下一个换行符之前终止(显然不是
\n
)。之所以存在
\n
是为了让开发人员能够轻松地将换行符(ASCII:10)放入字符串中

当您有一个如下所示的字符串时:

var foo = "Bob
is
cool";
//Note lack of terminating double quote
var foo = "Bob 
var a = 'Hello', b = 'World';
console.log(`The computer says ${ a.toUpperCase() }, ${b}!`);
// results in "The computer says HELLO, World!"
此时代码将出现语法错误并停止运行

如果希望字符串跨越多行,可以在终止行之前插入反斜杠“
\
”,如下所示:

//Perfectly valid code
var foo = "Bob \
is \
cool.";
但是,该字符串将包含
\n
字符,这些字符位于字符串被拆分为单独行的位置。在字符串中插入换行符的唯一方法是插入值为10的字符,最简单的方法是转义字符

var foo = "Bob\nis\ncool.";
var foo = `Bob
is
cool`;

这是对上面@Andrew Dunn帖子的一个小小的补充

结合2可以生成可读的JS和匹配的输出

var foo=“Bob\n\
是\n\
酷。\n\;

更新:我刚刚在JavaScript-ES6中做了一个很棒的语法设计,名为。您想做的事情可以使用
`
(反勾号或严重重音字符)直接完成

在这种情况下,
foo==“Bob\nis\ncool”
为true


为什么设计师决定,
``可以不终止,但是
“…”
“…”中包含换行符是非法的,我无法理解

只需确保目标浏览器支持ES6指定的Javascript实现


另外,该语法还支持PHP、.NET和其他一些脚本语言中的一个非常酷的特性;即“”,您可以使用它构建如下参数化字符串:

var foo = "Bob
is
cool";
//Note lack of terminating double quote
var foo = "Bob 
var a = 'Hello', b = 'World';
console.log(`The computer says ${ a.toUpperCase() }, ${b}!`);
// results in "The computer says HELLO, World!"

用于在JS中转义新行字符的查询字符串:
将数据本地填充“DATA.csv”加载到以“,”结尾的表演示字段中,以“,”结尾的行以“\r\n”结尾,忽略1行;

这涉及到新的ES6语法-模板文本``并且我尝试将'\n'更改为'\r\n',在我的案例中效果非常好


PS:这个例子是我将CSV数据上传到mysql数据库的查询。

\n
(除非它可能也是
\r
)我想他的意思是,它们不是用转义序列来表示的,而是字符在源代码中确实存在。@Pointy:但如果不是语法错误,结果还是一样的。”纯格式“换行符只是特殊字符的可见结果\n只是它的别名。@Evert是的,我当然同意;我也在想语法错误。请不要发布链接作为答案。:)同意,将函数粘贴在这里-由消息来源提供。从stackoverflow的移动站点编写完整的脚本非常困难:)我正在这么做。我已经检查了所有三个:
console.log(story.message.split(/\n/g));console.log(story.message.split(/\r/g));console.log(story.message.split(/\r\n/g))它们都返回相同的值。不,谢谢。那样的话,为什么这行不通呢<代码>控制台.log(story.message.split(/\n/g));console.log(story.message.split(/\r/g));console.log(story.message.split(/\r\n/g))它们都返回相同的值。2016年8月没有更新:现在有一种方法可以做到这一点:我试图在谷歌应用程序脚本IDE中使用``并且它显示“非法字符”。如何处理?@kiki似乎Google Apps不支持ES6语法(允许这种语法的javascript版本),@kiki因此我建议学习并使用Babel,以便将ES6“传输”到Google Apps脚本的兼容javascript的旧版本。你也可以问一个题为“如何在GoogleAppsScriptIDE中使用ES6”的问题,也许有人能解决这个问题。我能给你10张赞成票吗?它真的很神奇!:)“为什么设计师认为,`……`可以不确定,但是”。。。“而且,“…”在其中包含换行符是非法的,我无法理解。”-1995年的Javascript开发人员与2015年的开发人员不一样。更改旧式字符串会破坏旧代码。道理很清楚。