替换字符串中的第一个和最后一个字符(javascript)

时间:2018-03-16 11:18:10

标签: javascript arrays string

我需要替换随机字符串中的第一个和最后一个字符。为什么这段代码不起作用?

function symbExchange(line) {  
    var tmp = line[0];  
    var str = line.replace(line[0], line[line.length-1]);  
    var str2 = str.replace(str[str.length-1], tmp);  
    return str2;
}

5 个答案:

答案 0 :(得分:0)

这是因为replace函数返回一个新字符串,其中一个或所有匹配的模式被替换替换。

如果您需要交换字符,可以在您的情况下使用正则表达式(但这不是最佳实现)

function symbExchange(line) {  
    var tmp = line[0];  
    var str = line.replace(new RegExp('^' + line[0]), line[line.length-1]);  
    var str2 = str.replace(new RegExp(str[str.length-1] + '$'), tmp);  
    return str2;
}

答案 1 :(得分:0)

它不起作用,因为替换功能将替换第一次出现

试试这个:

function symbExchange(line) {  
    var first = line[0];  
    var last = line[line.length-1];  
    line[0] = last;
    line[line.length-1] = first
    return str2;
}

答案 2 :(得分:0)

此行替换首次出现的与最后一个字符相同的字符。不是最后一个角色。

var str2 = str.replace(str[str.length-1], tmp);  

可能的解决方案是不使用替换功能:

function symbExchange(line) {  
    var startCh = line[0];  
    var endCh = line[line.length-1];
    var str = line;
    str[0] = endCh;
    str[str.length-1] = startCh;
    return str;
}

答案 3 :(得分:0)

String.Replace与字符串参数一起使用时,只会替换该字符串的第一个匹配项。您需要使用正则表达式作为参数,或者执行拆分“n”连接。哪一个更好/更快取决于字符串的长度和要替换的出现次数。

var src = "helloworldhello";
var dest = src.replace( /hello/g , "goodbye");
console.log(dest);

var src = "helloworldhello";
var dest = src.split("hello").join("goodbye");

答案 4 :(得分:0)

将字符串转换为数组后转换为字符串

,然后使用交换字符
function symbExchange(line) {  

line = line.split("");
temp=line[0]
line[0]=line[line.length-1]
line[line.length-1]=temp
return line.join("")
}