Синтаксис ES6 допускает другой подход:
function splitOnce(s, on) {
[first, ...rest] = s.split(on)
return [first, rest.length > 0? rest.join(on) : null]
}
, который также обрабатывает возможность строки, не имеющей |
, возвращая пустую строку, а не пустую строку, что является более явным.
splitOnce("1|Ceci n'est pas une pipe: | Oui", "|")
>>> ["1", "Ceci n'est pas une pipe: | Oui"]
splitOnce("Celui-ci n'a pas de pipe symbol!", "|")
>>> ["Celui-ci n'a pas de pipe symbol!", null]
Pas de pipe? C'est null!
Я добавил этот ответ прежде всего для того, чтобы я мог сделать каламбур на символе канала, а также показать синтаксис es6 - удивительно, сколько людей до сих пор его не используют ...