我有一个场景,我需要反转字符串中的子字符串。Javascript字符串是不可变的,传统的字符串交换技术在这里不起作用。所以我决定使用string.split('')
和string.join('')
方法来获得解决方案。请检查下面的代码。
function reverseAString(str, startIndex, endIndex) {
let left = startIndex;
let right = endIndex;
let output = str;
while(left < right) {
const arr = output.split('');
let temp = arr[left]
arr[left] = arr[right]
arr[right] = temp;
output = arr.join('');
left += 1;
right -= 1;
}
return output
}
这和预期的一样。但是有没有更好的方法来反转子串,因为上面的解决方案并不是实现反转的最好方法?
2条答案
按热度按时间3bygqnnd1#
这是你的函数但是要简化。我们可以把调用字符串方法链接到数组方法中。Array.prototype.reverse()用于反转一个数组,Array.prototype.join()用于将数组中的所有元素连接成一个字符串。String.prototype.substring()用于从原始字符串中删除字符串,但是不改变/更改原始字符串。
lf5gs5x22#
此解决方案使用两个捕获组构建正则表达式,一个用于跳过的字符数(例如,起始索引),另一个用于反转的字符数。使用此解决方案,您可以应用单个正则表达式替换,使用
.split('').reverse().join('')
反转第二个捕获组