【问题标题】:JavaScript adding quotes to outputJavaScript 在输出中添加引号
【发布时间】:2018-02-06 21:55:04
【问题描述】:

这是我的代码:

<!DOCTYPE html> 
  <html> 
    <body>     
      <h2>JavaScript Operators</h2>

      <p>The + operator concatenates (adds) strings.</p>

      <p id="demo"></p>
    </body> 

    <script> 
      var txt1 = '"Jhon"'; 
      var txt2 = "Doe";
      document.getElementById("demo").innerHTML = txt1 + " " + txt2;
    </script>
  </html>

输出类似于 Jhon Doe,但我想在输出中添加引号,例如“Jhon”“Doe”。我知道我可以通过向 "Jhon"' 或 "\"Jhon\"" 等变量添加转义来做到这一点,但我的变量在我的实际代码中不是字符串,这只是一个示例。

只是想再次澄清,我无法编辑字符串变量值我想在此处编辑输出以添加引号

document.getElementById("demo").innerHTML = txt1 + " " + txt2;

【问题讨论】:

  • document.getElementById("demo").innerHTML = "\"" + txt1 + " " + txt2 + "\"";
  • 我的意思是...您的演示代码向您展示了如何使用字符串连接。为什么不能使用字符串连接?无论如何,这很可能是作业希望你做的事情。
  • +1 @KevinB 的建议。您不能简单地将转义字符连接到变量两侧的引号中。当您说它不是实际代码中的字符串时,您是什么意思?
  • 字符串模板文字会使这看起来更好。 `"${txt1}" "${txt2}"`
  • @Iwrestledabearonce。您缺少两个引号。

标签: javascript html


【解决方案1】:

如果我理解正确,您可以使用 JSON.stringify 对字符串变量进行双重字符串化:

var txt1 = "Jhon";
var txt2 = "Doe";

document.getElementById("demo").innerHTML = JSON.stringify(txt1) + " " + JSON.stringify(txt2);
&lt;p id="demo"&gt;&lt;/p&gt;

【讨论】:

  • 这不是 JSON stringify 的预期用途,如果您只需要添加引号,我强烈建议您在连接时添加引号
  • @Ben 当字符串来自外部源时,并不总是可以添加引号。此外,您不知道它可能有什么类型的报价。所以是的——这正是字符串化的预期用途。
  • @dsfq 相反,总是可以添加引号,无论是使用连接还是字符串拆分,但是,使用 stringify 并不总是可以,并且 stringify 的预期用途是制作有效的 JSON对象字符串,碰巧在非对象和数组上,用双引号将它们括起来。这样做不是一个好主意,我怀疑性能也会差很多
【解决方案2】:

由于接受的答案以一种低效且无意的方式使用JSON.stringify(),因此浏览器支持更差,更不用说它不直观和奇怪,我想我会以正常且理论上更快的方式来做。

请记住,接受的答案对于列出的目的来说很好,我只是认为最好以直观的方式做事,你想添加引号,这就是添加引号的方式。 JSON.stringify() 用于创建一个变量或对象的 JSON 字符串,恰好加引号。

将您的文本输出更改为如下所示:

document.getElementById("demo").innerHTML = '"'+txt1+'"' + " " + '"'+txt2+'"';

如果您愿意,也可以使用\" 转义序列。

这在很多方面都更加通用,因为您现在可以执行以下操作:

var quote="\"";
var names=[
    ["John", "Doe"],
    ["Jane", "Doe"],
    ["Jennifer", "Dawn"]
];
names.forEach(function(item,key){
    var txt1=item[0];
    var txt2=item[1];
    document.getElementById("demo").innerHTML += quote+txt1+quote + " " + quote+txt2+quote+"<br/>";
});

在哪里quote="\""

预期输出

"John" "Doe"
"Jane" "Doe"
"Jennifer" "Dawn"

在哪里quote="'"

预期输出

'John' 'Doe'
'Jane' 'Doe'
'Jennifer' 'Dawn'

等等。这使得复杂的字符串操作变得更加容易,尤其是在涉及价格和放置正确​​的货币符号时。

【讨论】:

    猜你喜欢
    • 2019-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多