我无法在此代码中找到问题。我想反转字符串而不反转特殊字符。因此,如果字符串是'ab#$cd!'
,输出将是'dc#$ba!'
我得到的输出是'ab#$cd!'
(与输入相同)。
请在代码中找到问题。
function isAlphabet(x) {
if ((x >= 'A' && x <= 'Z') || (x >= 'a' && x <= 'z')) {
return true
} else {
return false
}
}
function reverse() {
var string1 = [];
string1 = 'ab#$cd!'
var n = string1.length;
var r = n - 1;
var i = 0;
while (i < r) {
if (!isAlphabet(string1[i])) {
i++;
} else if (!isAlphabet(string1[r])) {
r--;
} else {
var temp;
temp = string1[i];
string1[i] = string1[r];
string1[r] = temp;
i++;
r--;
}
}
return string1;
}
console.log(reverse());
你不能用这种方式修改字符串,字符串在JavaScript中是不可变的
var str = "abcdef";
console.log(str[1])
str[1] = "x"
console.log(str)
将您的字符串更改为数组,修改数组然后加入它:
var str = "abcdef", arr = str.split("");
console.log(arr[1])
arr[1] = "x"
console.log(arr.join(""))
你的例子(考虑重命名变量 - 我留下原始名称):
function isAlphabet(x) {
if ((x >= 'A' && x <= 'Z') || (x >= 'a' && x <= 'z')) {
return true
} else {
return false
}
}
function reverse() {
var string1 = [];
string1 = 'ab#$cd!'.split("")
var n = string1.length;
var r = n - 1;
var i = 0;
while (i < r) {
if (!isAlphabet(string1[i])) {
i++;
} else if (!isAlphabet(string1[r])) {
r--;
} else {
var temp;
temp = string1[i];
string1[i] = string1[r];
string1[r] = temp;
i++;
r--;
}
}
return string1.join("");
}
console.log(reverse());
这是一个使用split(),pop(),push()和reverse()方法的snippit。
function reverseString(str){
var splitString, exclamationMark, reverseArray, joinArray;
splitString = str.split("");
exclamationMark = splitString.pop();
reverseArray = splitString.reverse();
reverseArray.push(exclamationMark);
joinArray = reverseArray.join("");
return joinArray;
}
console.log(reverseString("ab#$cd!"));