我想要交换数组的第一个和最后一个字符,但是JavaScript不让我这样做。我不想使用任何内置函数。
function swap(arr, first, last){
var temp = arr[first];
arr[first] = arr[last];
arr[last] = temp;
}
我想要交换数组的第一个和最后一个字符,但是JavaScript不让我这样做。我不想使用任何内置函数。
function swap(arr, first, last){
var temp = arr[first];
arr[first] = arr[last];
arr[last] = temp;
}
由于字符串是不可变的。
数组表示法只是一种表示法,是 charAt
方法的捷径。你可以使用它来通过位置获取字符,但不能用它来设置字符。
因此,如果你想改变某些字符,你必须将字符串拆分成部分,并从这些部分构建所需的新字符串:
function swapStr(str, first, last){
return str.substr(0, first)
+ str[last]
+ str.substring(first+1, last)
+ str[first]
+ str.substr(last+1);
}
您也可以将字符串转换为数组:
function swapStr(str, first, last){
var arr = str.split('');
swap(arr, first, last); // Your swap function
return arr.join('');
}
split
方法会对一些语言使用的多字节Unicode字符造成彻底的破坏。 - Jeremy J Starchervar arr = [...str]
代替 split
。 - Oriolvar myFish = ["angel", "clown", "mandarin", "surgeon"];
var popped = myFish.pop();
myFish.unshift(popped) // results in ["surgeon", "angel", "clown", "mandarin"]
关于交换字符串的首尾字母,可以使用正则表达式来实现,例如:
"mandarin".replace(/^(\w)(.*)(\w)$/,"$3$2$1")// outputs nandarim ==> m is last character and n is first letter
编辑:我没有意识到您正在尝试操作一个字符串;我以为您只是指字符或值的数组。
在字符串中交换字符需要将字符串转换为数组,然后再将数组转换回字符串:
function swap(arr, first, last){
arr = arr.split(''); //to array
var temp = arr[first];
arr[first] = arr[last];
arr[last] = temp;
arr = arr.join("").toString() //to string
return arr;
}
str = "ABCDE"
str = swap(str,1,2)
console.log(str) //print "ACBDE"
function swapStr(str, first, last) {
if (first == last) {
return str;
}
if (last < first) {
var temp = last;
last = first;
first = temp;
}
if (first >= str.length) {
return str;
}
return str.substring(0, first) +
str[last] +
str.substring(first + 1, last) +
str[first] +
str.substring(last + 1);
}
我希望这段代码能帮助到某些人。
var word = "DED MOROZ";
var arr = word.split('');
for (var i = 0; i < arr.length/2; i++) {
var temp = arr[i];
arr[i] = arr[arr.length - i - 1];
arr[word.length - i - 1] = temp;
}
console.log(arr.join(""));