簡體   English   中英

如何全局替換 JavaScript 字符串中的正斜杠?

[英]How to globally replace a forward slash in a JavaScript string?

如何全局替換 JavaScript 字符串中的正斜杠?

以下會做,但只會替換一次出現:

"string".replace('/', 'ForwardSlash');

對於全局替換,或者如果您更喜歡正則表達式,您只需要轉義斜杠:

"string".replace(/\//g, 'ForwardSlash');

使用帶有g修飾符的正則表達式文字,並用反斜杠轉義正斜杠,這樣它就不會與分隔符發生沖突。

var str = 'some // slashes', replacement = '';
var replaced = str.replace(/\//g, replacement);

不使用正則表達式(雖然我只會在搜索字符串是用戶輸入的情況下這樣做):

var str = 'Hello/ world/ this has two slashes!';
alert(str.split('/').join(',')); // alerts 'Hello, world, this has two slashes!' 

您需要包裝正斜杠以避免跨瀏覽器問題或//注釋掉。

str = 'this/that and/if';

var newstr = str.replace(/[/]/g, 'ForwardSlash');

這對我將"//"變成了"/"

str.replace(/\/\//g, '/');

這是你想要的嗎?

'string with / in it'.replace(/\//g, '\\');

嗨,上面腳本中的一個小更正……上面的腳本在顯示輸出時跳過了第一個字符。

function stripSlashes(x)
{
var y = "";
for(i = 0; i < x.length; i++)
{
    if(x.charAt(i) == "/")
    {
        y += "";
    }
    else
    {
        y+= x.charAt(i);
    }
}
return y;   
}

這是克里斯托弗林肯的想法,但代碼正確:

function replace(str,find,replace){
    if (find != ""){
        str = str.toString();
        var aStr = str.split(find);
        for(var i = 0; i < aStr.length; i++) {
            if (i > 0){
                str = str + replace + aStr[i];
            }else{
                str = aStr[i];
            }
        }
    }
    return str;
}

示例用法:

var somevariable = replace('//\\\/\/sdfas/\/\/\\\////','\/sdf','replacethis\');

Javascript 全局字符串替換是不必要的復雜。 這個功能解決了這個問題。 性能影響可能很小,但我相信它可以忽略不計。

這是一個替代函數,看起來更簡潔,但平均比上述函數慢 25% 到 20%:

function replace(str,find,replace){
    if (find !== ""){
        str = str.toString().split(find).join(replace);
    }
    return str;
}

您可以創建一個RegExp對象以使其更具可讀性

str.replace(new RegExp('/'), 'foobar');

如果要替換所有這些,請添加"g"標志

str.replace(new RegExp('/', 'g'), 'foobar');
var str = '/questions'; // input: "/questions"
while(str.indexOf('/') != -1){
   str = str.replace('/', 'http://stackoverflow.com/');
}
alert(str); // output: "http://stackoverflow.com/questions"

建議的正則表達式/\\//g對我不起作用; 該行的其余部分( //g, replacement); ) 被注釋掉了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM