2016-10-02 33 views
3

我一直在使用更换 - 用 - 用替换()

var str = "Artist - Song"; 
str = str.replace("-", "feat"); 

改变一些文本为 “ - ”。

最近,我注意到上述代码无法替代的另一个“ - ”。 这个“ - ”似乎比正常的“ - ”长一点。

有没有办法用较短的“ - ”取代较长的一个? 任何帮助表示赞赏。谢谢

编辑。

这是如何编写其余代码的。

var befComma = str.substr(0, str.indexOf('-')); 
    befComma.trim(); 
    var afterhyp = str.substr(str.indexOf("-") + 1); 
    var changefeat = befComma.toUpperCase(); 

回答

1

给这一个镜头:

var str = "Artist – Song"; 
str = str.replace("–", "-"); // Add in this function 
str = str.replace("-", "feat"); 

这应该稍长替换 “ - ” 用更短的标准 “ - ”。

4

这个“ - ”看起来比正常的“ - ”要长一些。

有没有办法用较短的“ - ”取代较长的一个?

当然,你只是做同样的事情:

str = str.replace("–", "-"); 

注意,在这两种情况下,你只能更换第一比赛。如果您要更换所有的比赛,看到this question's answers,这点你在正则表达式与g标志:

str = str.replace(/-/g, "feat"); 
str = str.replace(/–/g, "-"); 

我不太清楚为什么你要更换一个长与短的一个,虽然;你是不是要用feat替换

如果是这样,这取代了第一:

str = str.replace(/[-–]/, "feat"); 

而这个替换所有:

str = str.replace(/[-–]/g, "feat"); 
+0

这是正确的,最全面的答案。 – connexo

+0

我试过使用上面的代码来代替更长的 - 用较短的一个。它没有解决。我想替换更长一个的原因是我有另一个运行代码将“ - ”中的单词分开。该代码扫描“ - ”,然后在“ - ”之前对单词进行“资本化”。但由于“ - ”没有被替换,代码停止工作。我编辑了这个问题以包含此代码。 –

+0

@ Chordzone.org:不知道该告诉你什么,上述内容适用于你在问题中引用的字符:https://jsfiddle.net/g5rgnLu5/ –