2016-12-13 1 views
0

이 예제에서 문자열에서 주어진 가격을 추출하고 싶습니다. 이 (" ")동적 문자열에서 단어를 추출하십시오.

가 어떻게 바로 가격 후 공간을 받고 가야합니까 공간의 마지막 인덱스를 선택하기 때문에

const string = 'I am a long sentence! My price is $5,000 on a discount!'; 
 
const price = string.substring(string.lastIndexOf("$")+1,string.lastIndexOf(" ")); 
 
document.write(price);

위의 방법은 작동하지 않습니다?


편집 :

문자열은 다른 어떤 수 있습니다! 나는 그것에 대한 통제권이 없다, 나는 단지 가격을 추출하고 싶다. 나는 분명히하지 않았다.

+0
+0

그 문장은 가격 뒤에 'on'단어가 항상 포함되어 있지 않기 때문에 나는 그것을 할 수 없습니다. –

답변

2

정규식이 항상 올바른 도구는 아니지만이 경우 확실한 선택입니다. 당신이 정말로 원하는 것은 $과 일치하는 숫자와 쉼표가 뒤섞여 다른 문자로 끝나는 모든 것입니다.

const re = /\$[\d,]+/ 
 
const string = 'I am a long sentence! My price is $5,000 on a discount!'; 
 
const prices = re.exec(string); 
 
console.log(prices[0]);

또한 일치, 예를 들어, 패턴을 확장 할 수 있습니다 .-/\$[\d,.]+ ("$ 5,000.25"캡처하는 것) 또는 공백 만 추가 허용, 아무것도 막 수 : /\$[^ ]+/ ("$ tonsofmoney"를 캡처합니다).

+0

특별히 언급하지는 않았지만 답변을 수락했습니다. 동적 문장은 가격 뒤에'.' 마침표를 포함 할 수 있습니다. 나는 손을 더럽 히고 내가 생각하는 정규 표현식을 연구해야한다! –

2
const string = 'I am a long sentence! My price is $5,000 on a discount!'; 
    const price =string.split('$')[1]//text after $ 
      .split(' ')[0];// text after $ and before space 
    document.write(price); 

const string = 'I am a long sentence! My price is $5,000 on a discount!'; 
 
const price =string.split('$')[1].split(' ')[0]; 
 
document.write(price);

또는

const string = 'I am a long sentence! My price is $5,000 on a discount!'; 
 
    const price =string.match(/\$[0-9]*,[0-9]*/); 
 
//match $XXX,XXX in the string and estract it 
 
    document.write(price);

+0

위의 코드가 어떻게 작동하는지 간략하게 설명해 주시겠습니까? 고마워요 편집 : 두 번째 방법은 작동하지 않습니다! 앞서 언급했듯이, 나에게 주어진 문자열은 매번 똑같지는 않을 것이라는 역동적 인 의미입니다. –

+1

ok 답변을 업데이트하겠습니다. –

0

당신이 사용할 수있는 string.split()

const string = 'I am a long sentence! My price is $5,000 on a discount!'; 
 
const price = (string.split('$')[1]).split(' ')[0]; 
 
document.write(price);

이 $의 첫 번째 인덱스의 문자열을 분할하고 $ 후 참여한다.
공백의 첫 번째 모양에서 문자열을 분할하고 공백 앞에 부분을 가져옵니다.

문자열에 $ 기호 1 개만 있어야합니다.

1

시도해보십시오. 더 나은 가독성을 위해 여러 행으로 나눌거야.

const string = 'I am a long sentence! My price is $5,000 on a discount!'; 
 
var dollarPosition = string.lastIndexOf("$"); 
 
var nextSpace = string.indexOf(" ", dollarPosition+1); 
 
const price = string.substring(dollarPosition+1,nextSpace); 
 
document.write(price);

+0

이 방법은이 케이스에서 완벽하게 작동합니다. 단계로 나누어 주셔서 감사합니다. –

2

당신이 시도 할 수 : 대신에 '에'다음 공간에 대한

const string = 'I am a long sentence! My price is $5,000 on a discount!'; 
const price = (string.split("$")[1].split(" ")[0]); 
document.write(price); 
1

const string = 'I am a long sentence! My price is $5,000 on a discount!' + 
 
    'Another price: $120.'; 
 

 
var m = string.match(/\$[\d,]+/g); 
 
var i, price; 
 
if (m) { 
 
    for (i = 0; i < m.length; i++) { 
 
    price = m[i].replace('$', ''); 
 
    console.log(price); 
 
    } 
 
}

관련 문제