분할 문자열 배열의 마지막 요소 얻기


183

여러 구분 기호가있는 분할 배열의 마지막 요소를 가져와야합니다. 구분 기호는 쉼표와 공백입니다. 구분 기호가 없으면 원래 문자열을 반환해야합니다.

현이 "오늘 어떻게 지내십니까?" "오늘?"

입력이 "hello"인 경우 출력은 "hello"여야합니다.

JavaScript로 어떻게 할 수 있습니까?

답변:


122
var str = "hello,how,are,you,today?";
var pieces = str.split(/[\s,]+/);

이 시점에서 pieces배열은 배열이며 pieces.length배열의 마지막 요소를 얻기 위해 배열의 크기를 포함합니다 pieces[pieces.length-1]. 쉼표 나 공백이 없으면 주어진 문자열을 단순히 출력합니다.

alert(pieces[pieces.length-1]); // alerts "today?"

55
pieces.pop()배열의 마지막 항목을 얻는 데 사용할 수도 있습니다 .
Trent

4
변수를 저장하지 않고 str.split ()을 다시 참조하기 위해 이것을 사용하는 방법이 있습니까?
Tanner

1
var last = str.split(/[\s,]+/).pop()
잔 더워

788

모든 것을위한 하나의 라이너가 있습니다. :)

var output = input.split(/[, ]+/).pop();

6
여기서 문제는 pop ()도 배열에서 해당 요소를 제거 하여 변경한다는 것입니다.
slashwhatever

50
@Jangla : 배열이 split호출에 의해 만들어 지므로 문제가되지 않습니다. 원래 문자열은 배열에서 항목을 팝업으로 변경하지 않습니다.
Guffa

1
화려한, 한 번에, 배열을 설정하기 위해 중개 var 필요가 없습니다 ... nice
virtualeyes

@Guffa 마지막 두 요소를 어떻게 나눌 수 있는지 알고 있습니까?
Vitor Guerreiro

2
@MarioLevrero는 : 수단이 한정 기호와 같은 것이 그건 정량의 {1,}, 즉 [, ]+세트 (콤마와 스페이스)에서 더 많은 캐릭터 중 하나와 일치하거나. 문자열에서 모든 단어를 원할 때 유용하지만 마지막 단어 만 원할 때 기능상의 차이는 없지만 배열에 문자열이 적기 때문에 오버 헤드 만 줄입니다.
Guffa

56
var item = "one,two,three";
var lastItem = item.split(",").pop();
console.log(lastItem); // three

10
pop ()이 인수를 사용한다고 생각하지 않습니다.
Grace Shao


5
그러나 일반적으로 말하면 .split(',').pop()쉼표로 구분 된 문자열의 마지막 요소에서 작동합니다. 그냥 Guffa의 멋진 답변으로 오해 된 cuz를 말하면, 정규 표현식이 필요없고 트릭이 있다고 생각했기 때문에 무시했습니다! : P
cregox

25

배열을 뒤집고 첫 번째 요소를 취하는 것도 고려할 수 있습니다. 이렇게하면 길이를 알 필요는 없지만 큰 배열에서 리버스 작업이 오래 걸릴 수 있다는 실제 이점과 단점은 없습니다.

array1.split(",").reverse()[0]

쉽지만 문제의 원래 배열을 수정합니다. 문제가 될 수도 있고 아닐 수도 있습니다.

참조 : https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reverse

아마 당신은 이것을 사용하고 싶을 것입니다 :

array1.split(",").pop()

1
.pop()방법은 내가 지금까지 본 최고의 답변입니다. 그것이 그것이 만들어진 이유입니다!
Nicholas Porter

큰 배열에서는 반전이 비쌀 것이기 때문에 reverse ()에 대해 강력히 권장합니다. 돌연변이에 신경 쓰지 않으면 pop ()을 사용하고, 그렇지 않으면 slice (-1) [0]을 사용하십시오.
Wortwart


3

그리고 배열을 구성하지 않으려면 ...

var str = "how,are you doing, today?";
var res = str.replace(/(.*)([, ])([^, ]*$)/,"$3");

영어로 된 분류는 다음과 같습니다.

/(anything)(any separator once)(anything that isn't a separator 0 or more times)/

바꾸기는 전체 문자열을 마지막 구분 기호 뒤에있는 항목으로 바꿉니다.

이것이 일반적으로 어떻게 적용되는지 볼 수 있습니다. 원래 문자열은 수정되지 않습니다.


0
var title = 'fdfdsg dsgdfh dgdh dsgdh tyu hjuk yjuk uyk hjg fhjg hjj tytutdfsf sdgsdg dsfsdgvf dfgfdhdn dfgilkj,n, jhk jsu wheiu sjldsf dfdsf hfdkdjf dfhdfkd hsfd ,dsfk dfjdf ,yier djsgyi kds';
var shortText = $.trim(title).substring(1000, 150).split(" ").slice(0, -1).join(" ") + "...More >>";

0

배열 인덱스에 직접 액세스 할 수 있습니다.

var csv = 'zero,one,two,three'; csv.split(',')[0]; //result: zero csv.split(',')[3]; //result: three


3
안녕하세요 tnong, SO에 오신 것을 환영합니다! 이 답변은 질문에서 요청 한대로 공백 구분 기호를 고려하지 않는다고 생각합니다.
존 필립

1
이 답변은 임의의 문자열 배열 길이를 지원하지 않습니다
Nima Soroush
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.