【问题标题】:How to dynamically split a string using JavaScript/jQuery after so many occurences of a character如何在出现这么多字符后使用 JavaScript/jQuery 动态拆分字符串
【发布时间】:2015-07-22 17:12:47
【问题描述】:

我正在寻找一种在 JavaScript 中动态拆分字符串并在特定字符多次出现后保留内容的方法。我已经尝试过寻找解决这个问题的方法,但没有任何成功。这是我将使用的格式示例:

var s = "17:44, 22 July 2015 Foo connected to chat from address 127.0.0.1";

在上面的示例中,我想要 2015 之后行的其余内容,但同时我不想使用 2015 或字符串的任何开头作为硬编码的分割方式,因为用户可以这样称呼自己,这样会搞砸分裂的方式,而且我有时也得倒退几年。

简而言之,我想在第 4 个空格之后动态拆分字符串,并保留后面的内容而不拆分其余部分。

【问题讨论】:

标签: javascript jquery string split


【解决方案1】:

进行匹配而不是拆分。

> var s = "17:44, 22 July 2015 Foo connected to chat from address 127.0.0.1";
> s.match(/^((?:\S+\s+){3}\S+)\s+(.+)/)
[ '17:44, 22 July 2015 Foo connected to chat from address 127.0.0.1',
  '17:44, 22 July 2015',
  'Foo connected to chat from address 127.0.0.1',
  index: 0,
  input: '17:44, 22 July 2015 Foo connected to chat from address 127.0.0.1' ]
> s.match(/^((?:\S+\s+){3}\S+)\s+(.+)/)[1]
'17:44, 22 July 2015'
> s.match(/^((?:\S+\s+){3}\S+)\s+(.+)/)[2]
'Foo connected to chat from address 127.0.0.1'

var s = "17:44, 22 July 2015 Foo connected to chat from address 127.0.0.1";
alert(s.match(/^(?:\S+\s+){3}\S+|\S.*/g))
  • ^(?:\S+\s+){3}\S+ 将匹配前四个单词。
  • |
  • \S 匹配剩余字符串中的第一个非空格字符。
  • .* 贪婪地匹配所有剩余的字符。

【讨论】:

  • 感谢您的解释和示例,非常有用,正是我想要的:)
  • 如果我想将日期保留为单个拆分怎么办?我需要的输出是"17:44 22 July 2015, Foo connected to chat from address 127.0.0.1"
【解决方案2】:

Splitslicejoin 用于解决问题

function splitter(string, character, occurrences) {
  var tmparr = string.split(character); // split string by passed character, it returns Array
  return tmparr.slice(occurrences, tmparr.length).join(" "); // slice returns a shallow copy of a portion of an Array into a new Array object. And finally join() - joins all elements of an array into a string.
}

var s = "17:44, 22 July 2015 Foo connected to chat from address 127.0.0.1";

alert(splitter(s, ' ', 4))

【讨论】:

  • 你能补充一些解释吗?
猜你喜欢
  • 2015-02-09
  • 1970-01-01
  • 2018-12-06
  • 1970-01-01
  • 2021-08-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-26
相关资源
最近更新 更多