【问题标题】:Storing The Sliced Character from .slice Method从 .slice 方法存储切片字符
【发布时间】:2017-04-11 19:24:52
【问题描述】:

当我像这样使用切片方法时:

"Hello".slice(0,-1);

我得到的结果将是“地狱”。然后,如果我使用相同的代码再次运行它,我将得到“Hel”。

有没有一种方法可以提取并存储到变量中被切掉的实际字符,在这种情况下是“H”或第二次运行时的“e”,而不仅仅是字符串的其余部分?

【问题讨论】:

  • slice(0,1) 怎么样?
  • “我得到的结果将是“ello”” - 不会,它会是 "Hell"
  • 糟糕,感谢@nnnnnn 的检查。
  • 感谢@abhishekkannojia,但如果我多次尝试这样做,它会一直返回“H”而不是通过字符串继续存储下一个字符是否被切掉?

标签: javascript string slice


【解决方案1】:

您可以在原始字符串上使用第二个.slice()

例如,"Hello".slice(0,-1); 返回除最后一个字符之外的所有字符,"Hello".slice(-1) 仅返回最后一个字符。

var input = "Hello";
var removed = input.slice(-1);       // "o"
var remaining = input.slice(0, -1);  // "Hell"

我认为没有比这更通用的解决方案了,因为.slice() 还可以让您提取字符串的中间,在这种情况下您需要两个 em> 额外调用来移除这两个部分。

演示:

var input = "Hello";
var allRemoved = [];
var removed;
while (input != "") {
  allRemoved.push(removed = input.slice(-1));
  input = input.slice(0, -1);
  console.log("'" + removed + "' removed, leaving '" + input + "'");
}
console.log("Removed: " + allRemoved.join(", "));

或者,如果您只关心一次删除一个字符,您可以忘记.slice(),而是将字符串转换为数组并使用.shift().pop() 删除开头或结尾的字符分别:

var input = "Hello";
var inArr = input.split("");
while (inArr.length > 0) {
  console.log(inArr.pop());
}

【讨论】:

  • 谢谢!是的,我认为这与@abhishekkannojia 所建议的方法相同。但它停在那里。我无法遍历我的字符串并提取然后存储我从字符串中切下的每个后续字符?
  • 我不确定你到底想做什么,但我添加了一个演示,一次删除一个字符并将它们放入一个数组中。我相信你可以从那里适应......
  • 不客气。我刚刚更新以展示另一种方法来一次获取一个字符串。
  • 再次感谢@nnnnnn!我不明白为什么我的问题一直被否决:(
猜你喜欢
  • 2022-01-21
  • 2015-07-24
  • 2014-04-27
  • 2020-11-27
  • 2019-08-12
  • 2019-09-30
  • 2016-03-02
  • 2021-08-05
  • 1970-01-01
相关资源
最近更新 更多