替换字符串中的单引号

时间:2018-08-08 17:36:18

标签: javascript replace

我正在尝试使用这样的字符串:

B R2 U2 B F U2 L2 F2 U2 R2 F' U' B' D R' U2 B U' R B F'

并将其显示为HTML,作为跨度上的标题,因此,当您将鼠标悬停在跨度上时,该字符串将显示为悬停文本。

我正在尝试使用那些单引号(')并对其进行转义,以便它们仍可以显示在字符串中,但不要尽早结束title属性,这就是现在所做的。

如果我尝试这样做:

var fixedString = string.replace("'", "\'");
col.innerHTML = "<span title='" + fixedString + "'>" + irrelevantVar + "</span>";

这将显示字符串直到第一个单引号,然后才停止。我不确定自己在做什么错。

有什么想法吗?

3 个答案:

答案 0 :(得分:0)

使用String.replace(subString, replaceVal)只会替换找到的MOZ Docs的第一个子字符串。如果要替换所有出现的内容,则需要将第一个参数设为正则表达式。我已使用适当的表达方式修改了您的代码段。 //表示一个正则表达式,后面的g标记表示它将查找//中所有出现的字符串(或表达式)。

var fixedString = string.replace(/'/g, "\'");
col.innerHTML = "<span title='" + fixedString + "'>" + irrelevantVar + "</span>";

答案 1 :(得分:0)

您可以使用library(dplyr) library(tidyr) library(ggplot2) vec1 <- c(1,2,1,3) vec2 <- c(3,3,2,4) df <- data.frame(vec1, vec2) df_long <- df %>% mutate(id = row_number()) %>% gather(key, value, -id) df_long #> id key value #> 1 1 vec1 1 #> 2 2 vec1 2 #> 3 3 vec1 1 #> 4 4 vec1 3 #> 5 1 vec2 3 #> 6 2 vec2 3 #> 7 3 vec2 2 #> 8 4 vec2 4 ggplot(df_long, aes(x = id, y = value)) + geom_point(aes(color = key, shape = key), size = 3) + theme_classic(base_size = 16) 而不是再次将标题值放在单引号内

template literals
let string = "B R2 U2 B F U2 L2 F2 U2 R2 F' U' B' D R' U2 B U' R B F'"
let col = document.getElementById('test')



var fixedString = string.replace("'", "\'");
col.innerHTML = `<span title="${fixedString}">Hello</span>`;

答案 2 :(得分:0)

您需要在.replace()函数中使用正则表达式并添加一个全局标志

var fixedString = string.replace(/'/g, "\'");

“ g”标志指示应在提供的字符串中所有出现的情况下对正则表达式进行测试。没有该标志,它将仅在第一个比赛中运行一次。

参考:Regular Expression on MDN


除了替换和转义之外,您还可以使用“ apos” html代码显示引号。请参阅此处以获取参考:W3 HTML Entities