어떻게 한 번만 즉, 메이크업의 문자열을 분할 할 수 있습니다 1|Ceci n'est pas une pipe: | Oui
에 구문 분석을 : ["1", "Ceci n'est pas une pipe: | Oui"]
?
분할의 한계가 도움이되지 않는 것 같습니다 …
답변
이것은 예쁜 접근 방식은 아니지만 적절한 효율성으로 작동합니다.
var string = "1|Ceci n'est pas une pipe: | Oui";
var components = string.split('|');
alert([components.shift(), components.join('|')]);
답변
String.indexOf('|')
‘|’가 처음 나타나는 색인을 가져 오는 데 사용하고 싶을 것 입니다.
var i = s.indexOf('|');
var splits = [s.slice(0,i), s.slice(i+1)];
답변
당신이 사용할 수있는:
var splits = str.match(/([^|]*)\|(.*)/);
splits.shift();
정규식은 문자열을 두 개의 일치하는 그룹 (괄호로 묶음)으로 분할하고 첫 번째 | 그리고 뒤에 텍스트. 그런 다음 shift
전체 문자열 일치 ( splits[0]
)를 제거하는 결과 입니다.
답변
하나의 라이너와 imo, 더 간단 :
var str = 'I | am super | cool | yea!';
str.split('|').slice(1).join('|');
이것은 “am super | cool | yea!”를 반환합니다.
답변
ES6 구문은 다른 접근 방식을 허용합니다.
function splitOnce(s, on) {
[first, ...rest] = s.split(on)
return [first, rest.length > 0? rest.join(on) : null]
}
또한 |
빈 문자열이 아닌 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]
파 드 파이프? C’est null!
나는 주로 파이프 기호에 말장난을 할 수 있도록이 답장을 추가했지만, es6 구문을 보여주기 위해-얼마나 많은 사람들이 여전히 그것을 사용하지 않는지 놀랍습니다.
답변
이 시도:
function splitOnce(input, splitBy) {
var fullSplit = input.split(splitBy);
var retVal = [];
retVal.push( fullSplit.shift() );
retVal.push( fullSplit.join( splitBy ) );
return retVal;
}
var whatever = splitOnce("1|Ceci n'est pas une pipe: | Oui", '|');
답변
문자열에 구분 기호가 포함되지 않은 경우 @NickCraver의 솔루션은 여전히 두 요소의 배열을 반환하고 두 번째 요소는 빈 문자열입니다. 나는 분할과 일치하는 행동을 선호합니다. 즉, 입력 문자열에 구분 기호가 포함되어 있지 않으면 단일 요소가있는 배열 만 반환됩니다.
var splitOnce = function(str, delim) {
var components = str.split(delim);
var result = [components.shift()];
if(components.length) {
result.push(components.join(delim));
}
return result;
};
splitOnce("a b c d", " "); // ["a", "b c d"]
splitOnce("a", " "); // ["a"]