如何使用for循环删除JavaScript中字符串左右两边的空格?
How can I use a for loop to delete empty spaces at the left and right of a string in JavaScript?
我正在尝试自制 trim()
的 JavaScript 方法。我的意思是,我想做的可以使用 trim()
来实现:从 string
.
的左右删除所有白色 space
我想到了这个麻烦的解决方案;我认为它应该起作用,但它根本不起作用;相反,它删除了 string array
的所有元素,只留下一个 array
字符串,其中一个空 space 作为唯一元素。
这是我编写的 运行 代码片段:
const stringWithManyWhiteSpaces = ' I like ants... Remember us ';
const charArray = [...stringWithManyWhiteSpaces];
function killLeftToRight(charArr) {
for ( let i = 0; i < charArr.length; i++) {
if (charArr[i] === ' ') {
charArr.splice(i + 1);
} else {
break;
}
}
}
function killRightToLeft(charArr) {
for ( let i = charArr.length -1; i >= 0; i--) {
if (charArr[i] === ' ') {
charArr.splice(i + 1);
} else {
break;
}
}
}
function myTrim(){
killRightToLeft(charArray)
killLeftToRight(charArray);
console.log(charArray)
}
myTrim();
谁能帮我弄清楚我的代码有什么问题?非常感谢。
- 要从数组中删除项目,
splice
需要您在第二个参数中指定要删除的项目数量
splice
将从数组中删除给定索引处的项目,因此在下一次迭代中,如果您按升序遍历索引,您可能会“跳过”一个项目,因为它指数刚刚重新计算
更易于使用 .pop
(从末尾删除)和 .shift
(从开头删除)。
const stringWithManyWhiteSpaces = ' I like ants... Remember us ';
function killLeftToRight(charArr) {
while (charArr[0] === ' ') {
charArr.shift();
}
}
function killRightToLeft(charArr) {
while (charArr[charArr.length - 1] === ' ') {
charArr.pop();
}
}
function myTrim(str){
const charArray = [...str];
killRightToLeft(charArray);
killLeftToRight(charArray);
console.log(charArray.join(''));
}
myTrim(stringWithManyWhiteSpaces);
去除白色 space 所需要做的就是
string.trim()
你的方法可以用不同的方式改变,所以它会像前面的答案中提到的那样工作得很好,但是如果你的目标是有你自己的修剪实现,以更简单的方式实现它怎么样?:
const stringWithManyWhiteSpaces = `
I like ants... Remember us
`;
function trimMe(stringToTrim) {
return stringToTrim.replace(/^[\s\n]+|[\s\n]+$/g, '')
}
console.log(trimMe(stringWithManyWhiteSpaces));
我正在尝试自制 trim()
的 JavaScript 方法。我的意思是,我想做的可以使用 trim()
来实现:从 string
.
我想到了这个麻烦的解决方案;我认为它应该起作用,但它根本不起作用;相反,它删除了 string array
的所有元素,只留下一个 array
字符串,其中一个空 space 作为唯一元素。
这是我编写的 运行 代码片段:
const stringWithManyWhiteSpaces = ' I like ants... Remember us ';
const charArray = [...stringWithManyWhiteSpaces];
function killLeftToRight(charArr) {
for ( let i = 0; i < charArr.length; i++) {
if (charArr[i] === ' ') {
charArr.splice(i + 1);
} else {
break;
}
}
}
function killRightToLeft(charArr) {
for ( let i = charArr.length -1; i >= 0; i--) {
if (charArr[i] === ' ') {
charArr.splice(i + 1);
} else {
break;
}
}
}
function myTrim(){
killRightToLeft(charArray)
killLeftToRight(charArray);
console.log(charArray)
}
myTrim();
谁能帮我弄清楚我的代码有什么问题?非常感谢。
- 要从数组中删除项目,
splice
需要您在第二个参数中指定要删除的项目数量 splice
将从数组中删除给定索引处的项目,因此在下一次迭代中,如果您按升序遍历索引,您可能会“跳过”一个项目,因为它指数刚刚重新计算
更易于使用 .pop
(从末尾删除)和 .shift
(从开头删除)。
const stringWithManyWhiteSpaces = ' I like ants... Remember us ';
function killLeftToRight(charArr) {
while (charArr[0] === ' ') {
charArr.shift();
}
}
function killRightToLeft(charArr) {
while (charArr[charArr.length - 1] === ' ') {
charArr.pop();
}
}
function myTrim(str){
const charArray = [...str];
killRightToLeft(charArray);
killLeftToRight(charArray);
console.log(charArray.join(''));
}
myTrim(stringWithManyWhiteSpaces);
去除白色 space 所需要做的就是 string.trim()
你的方法可以用不同的方式改变,所以它会像前面的答案中提到的那样工作得很好,但是如果你的目标是有你自己的修剪实现,以更简单的方式实现它怎么样?:
const stringWithManyWhiteSpaces = `
I like ants... Remember us
`;
function trimMe(stringToTrim) {
return stringToTrim.replace(/^[\s\n]+|[\s\n]+$/g, '')
}
console.log(trimMe(stringWithManyWhiteSpaces));