我需要替换随机字符串中的第一个和最后一个字符。为什么这段代码不起作用?
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;
}
答案 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("")
}