我有如下字符串:
ABCDEFGH
我想像下面这样反转它:
GHEFCDAB
我试过这个:
var str = "ABCDEFGH";
var splitString = str.split("");
var reverseArray = splitString.reverse();
var joinArray = reverseArray.join("");
并返回如下:
HGFEDCBA
我知道这是错的,它只是以一种方式逆转它。如何在该条件下反转 javascript 中的字符串?之前非常感谢。
您可以使用正则表达式来做到这一点:
let splited = str.match(/.{1,2}/g).reverse().join('');
str.match(/.{1,2}/g)
将 ABCDEFGH
转换为 [AB, CD, EF, GH]
reverse()
将 [AB, CD, EF, GH]
转换为 [GH, EF, CD, AB]
join('')
将 [GH, EF, CD, AB]
转换为 GHEFCDAB
使用空字符串
const str = 'ABCDEFGH'
var emptyStr = '';
for(let i = str.length; i>1; i--){
emptyStr += str.slice(i-2,i)
i--
}
console.log(emptyStr);
使用空数组
const str = 'ABCDEFGH'
const rev = str.split('');
const revStr = []
for(let i = str.length; i >=1; i--){
const strPair = rev.slice(i-2,i).join('');
i--;
revStr.push(strPair)
}
console.log(revStr.join(''))
输出:GHEFCDAB
class RevStr{
constructor(input){
this.str =input;
}
reverseStr() {
let str = this.str.match(/.{1,2}/g)
let end = str.length-1;
let start = 0;
while (start < end) {
let temp = str[start];
str[start] = str[end];
str[end] = temp;
start++;
end--;
}
console.log(str.join(''));
}
}
let s = new RevStr("abcdefgh");
s.reverseStr();
以下是在 JavaScript 中反转字符串的 3 个简单解决方案:
// Solution-1: Using reverse() method
function reverseString1(str) {
return str.split('').reverse().join('')
}
// Solution-2: Using for loop
function reverseString2(str) {
let reversed = '';
for(let character of str) {
reversed = character + reversed;
}
return reversed;
}
// Solution-3: Using reduce() method
function reverseString3(str) {
return str.split('').reduce((reversed, character) => character + reversed, '')
}
console.log("Solution 1: ", reverseString1("happy"));
console.log("Solution 2: ", reverseString2("database"));
console.log("Solution 3: ", reverseString3("loop"));
探索 JavaScript 中反转字符串的多种方法 反转字符串是编程中的一项常见任务,在 JavaScript 中可以通过多种方法来实现此目的。让我们探索五种不同的方法并讨论它们的实现和效率。
1。使用循环(方法 1) 第一种方法采用简单的循环来迭代字符串,并通过以相反的顺序附加原始字符串中的字符来构造反向版本。在此处输入代码
const reverseByLoop = (str) => {
let reversed = "";
for (let i = 0; i < str.length; i++) {
reversed = str[i] + reversed;
}
return reversed;
};
这种方法简单直观,但由于循环内的串联操作,它可能不是大字符串的最有效解决方案。
2。使用循环(方法 2) 与第一种方法类似,此方法通过从字符串末尾迭代到开头并将字符附加到反转的字符串来反转字符串。
const reverseByLoop1 = (str) => {
let reversed = "";
for (let i = str.length - 1; i >= 0; i--) {
reversed = reversed + str[i];
}
return reversed;
};
虽然这种方法的时间复杂度也为 O(n),但它的性能可能比第一种方法稍好,因为它避免了循环内的字符串连接。
3.使用循环(方法 3) 此方法不使用基于索引的循环,而是利用 for...of 循环来迭代字符串的每个字符并构建反向字符串。
const reverseByLoopOf = (str) => {
let reversed = "";
for (let char of str) {
reversed = char + reversed;
}
return reversed;
};
虽然在概念上与第一种方法类似,但此方法提供了更清晰的语法和可读性。
4。使用字符串方法 这种方法利用 split()、reverse() 和 join() 等内置字符串方法在一行代码中反转字符串。
const reverseByStringMethod = (str) => {
return str.split("").reverse().join("");
};
虽然简洁且优雅,但由于创建数组的开销,此方法可能不如基于循环的大字符串方法那么高效。
5。使用递归 递归方法通过使用不包括第一个字符的子字符串递归调用函数来反转字符串,直到整个字符串反转。
const recursiveReverse = (str) => {
let result = "";
if (!str) {
return "";
} else {
result = recursiveReverse(str.substr(1)) + str[0];
return result;
}
};