지정된 문자 jQuery 또는 JavaScript 전에 하위 문자열을 얻는 방법


238

쉼표 앞에 모든 것을 추출하려고합니다. JavaScript 또는 jQuery에서 어떻게해야합니까? 나는 이것을 시도하고 작동하지 않습니다 ..

1345 albany street, Bellevue WA 42344

나는 단지 주소를 잡고 싶다.

var streetaddress= substr(addy, 0, index(addy, '.')); 

29
addy.split(',', 1)[0]
antak

답변:


404
var streetaddress= addy.substr(0, addy.indexOf(',')); 

각 방법이 무엇을하는지에 대한 확실한 정보를 얻을 수있는 최상의 장소는 아니지만 ( 모질라 개발자 네트워크 가 더 좋습니다) w3schools.com 은 구문 소개에 적합합니다.


22
검색중인 문자열에 검색 문자 인스턴스가 포함되어 있지 않으면 작동하지 않습니다. 빈 문자열을 반환합니다.
David G

1
substr권장하지 않습니다. substring대신 developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…를
Ben Creasy


29

이 시도:

streetaddress.substring(0, streetaddress.indexOf(','));

1
왜 내 대답에 대한 사랑이 없습니까? 이 답변이 올바르다면 stackoverflow.com/questions/3745515/… 내 답변은 수락 된 답변만큼 정확하며 0 이외의 인덱스를 시작하는 데 효과적입니다.
Mikey G

8
위의 David G가 지적했듯이 쉼표가 없으면 작동하지 않기 때문일 수 있습니다. OP는 문자열에 항상 쉼표가 있음을 암시하지만 많은 경우 구분 기호가 보장되지 않습니다. jsfiddle.net/13pkp1xn
풍부한 Q Bangwhistle

22
//split string into an array and grab the first item

var streetaddress = addy.split(',')[0];

또한 가독성을 높이기 위해 camel-case (streetAddress)로 변수의 이름을 지정하는 것이 좋습니다.


이것은 쉼표 문자가없는 시나리오에서 indexof를 사용하는 방법보다 낫습니다
eyal_katz

2
당신은 처음에는 약간의 처리 및 정지 분할을 절약 할 수 있습니다 ","의 주석으로 게시 @antak 무엇을 사용하여 발견 stackoverflow.com/a/22386366/601386 : addy.split(',', 1)[0]. developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…를 참조하십시오 .
독감

배열 분해를 사용하면 다음과 const [streetAddress,] = addy.split(','); 같은 작업을 수행 할 수 있습니다. let [callerIdName, callerId] = callerIdString.split('<'); (원래 callerIdString 형식은 MCMULLIN, PARKER <+ 1XXXXXXXXXX>입니다)
parker_codes

1
이 답변이 2015 년 10 월 30 일에 게시 된 답변과 정확히 같지 않습니까?
kojow7

15

짧으면 RegExp을 사용하십시오 .

var streetAddress = /[^,]*/.exec(addy)[0];

4
+1, 나는 이것이 합리적인 방법이라고 생각하지만, 이것으로부터 힌트를 addy.split(',', 1)[0]
얻었고

3
이 방법은 예를 들어 공백으로 분할하려는 경우 매우 좋습니다. / [^ \ s] * /. exec (...)
NuSkooler

12

David G의 대답과 거의 동일하지만 익명 기능을 포함하고 싶지 않은 경우 익명 기능이 없습니다.

s = s.substr(0, s.indexOf(',') === -1 ? s.length : s.indexOf(','));

이 경우 두 번째 인수 substr가 길이이며 하위 문자열이 0에서 시작한다는 것을 알고 있습니다.

문자열에 원하는 문자가 포함되어 있지 않으면 바람직하지 않은 동작으로 인해 최상위 답변이 일반적인 해결책 이 아닙니다.

일반적인 경우에 올바른 동작을 원한다면이 방법 또는 David G의 방법을 사용하십시오.

정규식 및 분할 방법도 작동하지만이 특정 문제의 경우 다소 느려질 수 있습니다.




4

검색 문자열이 포함되지 않은 원래 문자열을 그대로 유지하려면 익명 함수 (닫기)를 사용할 수 있습니다.

var streetaddress=(function(s){var i=s.indexOf(',');
   return i==-1 ? s : s.substr(0,i);})(addy);

이것은보다 일반적인 것으로 만들 수 있습니다 :

var streetaddress=(function(s,c){var i=s.indexOf(c);
   return i==-1 ? s : s.substr(0,i);})(addy,',');


2

요구 사항과 일치하면 문자열을 제공하므로 정규식을 사용할 수 있습니다. 코드는 다음과 같습니다.

const address = "1345 albany street, Bellevue WA 42344";
const regex = /[1-9][0-9]* [a-zA-Z]+ [a-zA-Z]+/;
const matchedResult = address.match(regex);

console.log(matchedResult[0]); // This will give you 1345 albany street.

따라서 코드를 세분화하십시오. [1-9][0-9]*기본적으로 첫 번째 숫자는 0이 될 수 없으며 1-9그 사이의 숫자 여야하며 다음 숫자는 임의의 숫자 일 수 있으며 0-9때로는 숫자가 단지 한 자리수이므로 공백과 일치하므로 0 번 이상 발생할 수 있습니다. [a-zA-Z]기본적으로 모든 대문자와 소문자를 일치 시키며 한 번 이상 발생해야하며이 과정이 반복됩니다.


0

당신은 사용할 수 있습니다 AZLE을 문자열을 얻을 전에 :

str = 'This is how we go to the place!'

az.get_everything_before(str, 'place')

결과 : 우리가

str = 'This is how we go to the place!'

az.get_everything_after(str, 'go')

결과 : 장소에!

그리고 사이에 :

str = 'This is how we go to the place!'

az.get_everything_between(str, 'how', 'place')

결과 : 우리는

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.