2011-03-14 82 views
23

下面的代码:未结束的字符串

var str= "<strong>English Comprehension<\/strong> 
        <br\/> 
        <ul> 
        <li> Synonyms/Antonyms/Word Meaning (Vocabulary)<\/li> 
        <li> Complete the Sentence (Grammar)<\/li> 
        <li> Spot error/Correct sentence (Grammar/sentence construction)<\/li> 
        <li> Sentence Ordering (Comprehension skills)<\/li> 
        <li> Questions based on passage (Comprehension skills)<\/li> 
        <\/ul> 
        <br\/>"; 

给出了错误: “未终止的字符串常量”。有什么问题?

+3

为什么你'\ /'代码中的斜杠是不是一个特殊字符? 。它不需要转义 – 2011-03-14 09:18:42

回答

6

在Javascript中编写多行字符串不是最佳做法。

但是,你可以做到这一点与\终止:

var str= "<strong>English Comprehension<\/strong>\ 
       <br\/>\ 
       <ul>\ 
       <li> Synonyms/Antonyms/Word Meaning (Vocabulary)<\/li>\ 
       <li> Complete the Sentence (Grammar)<\/li>\ 
       <li> Spot error/Correct sentence (Grammar/sentence construction)<\/li>\ 
       <li> Sentence Ordering (Comprehension skills)<\/li>\ 
       <li> Questions based on passage (Comprehension skills)<\/li>\ 
       <\/ul>\ 
       <br\/>"; 

注意,尾随空格是字符串的一部分,所以它是更好地摆脱他们,除非他们是故意的:

var str= "<strong>English Comprehension<\/strong>\ 
<br\/>\ 
<ul>\ 
<li> Synonyms/Antonyms/Word Meaning (Vocabulary)<\/li>\ 
<li> Complete the Sentence (Grammar)<\/li>\ 
<li> Spot error/Correct sentence (Grammar/sentence construction)<\/li>\ 
<li> Sentence Ordering (Comprehension skills)<\/li>\ 
<li> Questions based on passage (Comprehension skills)<\/li>\ 
<\/ul>\ 
<br\/>"; 
38

你不能像在javascript中那样在线上分割字符串。你可以通过使每行一个单独的字符串,并用加号将它们像这样完成同样的可读性:

var str = "<strong>English Comprehension</strong>" 
    + "<br />" 
    + "<ul>" 
    + "<li>Synonyms/Antonyms/Word Meaning (Vocabulary)</li>" 

等等...

+0

Thanks.It对我来说工作正常:) – pinku 2013-02-08 05:27:29

1

删除换行符,它会奏效。 GOTCHA记住;) 看到它简单的作品都在这里很好不换行: http://jsfiddle.net/87dYh/

var str= "<strong>English Comprehension<\/strong><br\/><ul> <li> Synonyms/Antonyms/Word Meaning (Vocabulary)<\/li>     <li> Complete the Sentence (Grammar)<\/li>     <li> Spot error/Correct sentence (Grammar/sentence construction)<\/li>  <li> Sentence Ordering (Comprehension skills)<\/li>     <li> Questions based on passage (Comprehension skills)<\/li>     <\/ul>    <br\/>"; 

alert(str); 
18

如果使用JavaScript的多行字符串必须使用“\”中的每一行的末尾:

var str = "abc\ 
def\ 
ghi\ 
jkl"; 

如果您的代码缩进,还要注意额外的空格。

3

来连接在JavaScript字符串的好方法是休耕:

var stringBuilder = []; 

stringBuilder.push("<strong>English Comprehension</strong>"); 
stringBuilder.push("<br />"); 
stringBuilder.push("<ul>"); 
... 
var resultString = stringBuilder.join(""); 

这种方法速度比

var str = "a"+"b" +"c" 
+0

有趣的技巧,尽管在原始代码中没有字符串连接。 – 2011-03-14 09:06:07

+1

Thanx,它会非常有帮助 – VIKASH 2011-03-21 04:56:21

11

我建议以不同的方式做到这一点...有隐藏的元素与HTML例如

<div id="myHiddenDiv" style="display: none;"><strong>English Comprehension</strong> 
<br /> 
... 
</div> 

然后简单地读取其内部HTML:

var str = document.getElementById("myHiddenDiv").innerHTML; 

最大的好处是,你将不必与文字字符串打你的方式,它更容易编辑,不足之处是您将另一个元素添加到DOM。你的选择。 :)

+0

最终我用你的方法做到了。使用Jquery。 – VIKASH 2011-03-21 04:55:50

+2

欢呼@VIKASH,随时通过点击左边的“V”图标来接受答案。对于其他问题也一样 - 接受正确的答案就是这个地方是如何工作的。 :) – 2011-03-21 08:36:18

0

我的代码是一个response.write(),我需要插入HTML输出POST SUbmit在Iframe中的窗体上。当从文本编辑器复制我的代码时,Carraige返回结果进入代码窗口。一旦我删除了我的回报和空白标签之间,这样的代码看起来像固定的问题块段:

("loremIPSUM.<br><br><h2>Title</h2><br>loremIPSUM:<br><br><br><a href='http://url1'>lnk1</a><br><br><a href='http://url2'>loremIPSUMlnk2</a><br><br><a href='http://url3'>loremIPSUM</a><br><br><a href='url4'>IF THE case id is: "</a>"+value) 
1

如果你想保持字符串的一个块数据,可尝试:

var str= "<strong>English Comprehension</strong>\n\ 
       <br />\n\ 
       <ul>\n\ 
       <li> Synonyms/Antonyms/Word Meaning (Vocabulary)</li>\n\ 
       <li> Complete the Sentence (Grammar)</li>\n\ 
       <li> Spot error/Correct sentence (Grammar/sentence construction)</li>\n\ 
       <li> Sentence Ordering (Comprehension skills)</li>\n\ 
       <li> Questions based on passage (Comprehension skills)</li>\n\ 
       </ul>\n\ 
       <br />"; 

注意每行末尾的\n\

0

的JavaScript不允许在字符串字面换行,除非你逃脱他们\

var str= "<strong>English Comprehension<\/strong>\ 
    <br\/>\ 
    <ul>\ 
    <li> Synonyms/Antonyms/Word Meaning (Vocabulary)<\/li>\ 
    <li> Complete the Sentence (Grammar)<\/li>\ 
    <li> Spot error/Correct sentence (Grammar/sentence construction)<\/li>\ 
    <li> Sentence Ordering (Comprehension skills)<\/li>\ 
    <li> Questions based on passage (Comprehension skills)<\/li>\ 
    <\/ul>\ 
    <br\/>"; 

你可能看ES2015+ template literals代替,其中使用反引号,而不是'",让文字换行:

var str= `<strong>English Comprehension<\/strong> 
    <br\/> 
    <ul> 
    <li> Synonyms/Antonyms/Word Meaning (Vocabulary)<\/li> 
    <li> Complete the Sentence (Grammar)<\/li> 
    <li> Spot error/Correct sentence (Grammar/sentence construction)<\/li> 
    <li> Sentence Ordering (Comprehension skills)<\/li> 
    <li> Questions based on passage (Comprehension skills)<\/li> 
    <\/ul> 
    <br\/>`; 

但是,当然,这只适用于ES2015兼容的JavaScript引擎(或者如果你transpile)。

注意,在模板中文字${...}具有特殊的意义(允许你替换任何表达式的结果:

let v = "Ma"; 
console.log(`Look ${v}, no hands!`); // Look Ma, no hands!