2014-12-15 4 views
0

꽤 기본이지만 단순한 해결책을 간과 할까 봐 걱정됩니다. 나는 다음과 같은 문자열을 가지고있다 ... IBAN: NL56INGB06716xxxxx ...인덱스 찾기 특정 인덱스 이후에 캐릭터

나는 indexOf("IBAN: ")을 찾고 있는데, 나는 그 색인 다음에 다음 공백/공백 문자를 찾을 필요가있다.

정말 루프가 필요하다고 생각하지 않지만 제가 생각해 낼 수있는 최선입니다. 정규식 캡처 그룹 어쩌면 더 나은가요? 내가 어떻게 그럴 수 있니?

답변

1

동안을 비교하거나 사용, 특정 문자열을 찾습니다 Paul이 제안한 것처럼 시작 인덱스를 전달할 수 있습니다. 간단한 정규 표현식이 더 쉬울 수도 있습니다.

var re = /IBAN:\s*(\S+)/ 

캡처 그룹은 이후 공백이 아닌 문자의 순서를 보유 할 IBAN:

var match = re.exec(my_str) 
if (match) { 
    console.log(match[1]); 
} 
+0

IBAN에는'\ W +'이면 충분합니다. – Bergi

+0

감사합니다. @Bergi. 나는 어떤 문자가 포함되어야하는지 잘 모르겠다. 그래서 나는 그의 목표 공간을 구분 문자로 사용했다. –

2

fromIndex 옵션 str.indexOf(searchValue[, fromIndex])String.prototype.indexOf

MDN에서

. 검색을 시작할 호출 문자열 내의 위치입니다. 정수가 될 수 있습니다. 기본값은 0입니다.

n.b. 당신은 많은 문자에서 선택을 찾으려면 .indexOf은 당신이 어느 것 루프 필요 정규식


정중 한 예를

var haystack = 'foo_ _IBAN: Bar _ _'; 
var needle = 'IBAN: ', 
    i = haystack.indexOf(needle), 
    j; 
if (i === -1) { 
    // no match, do something special 
    console.warn('One cannot simply find a needle in a haystack'); 
} 
j = haystack.indexOf(' ', i + needle.length); 
// now we have both matches, we can do something fancy 
if (j === -1) { 
    j = haystack.length; // no match, set to end? 
} 
haystack.slice(i + needle.length, j); // "Bar" 
+0

감사합니다 ... * facepalms * – Jonathan

+0

폴 - 나는 당신의 대답은 가장 적합한 올바른 하나입니다 생각 질문 제목 : * 특정 색인 다음에 * 색인 찾기 * * ... 그러나, 예의에 따라 결과 색인으로 답변을 완성 할 수 있습니다 : 'indexOf ("", indexOf ("IBAN :"))' – LcSalazar

+0

@LcSalazar : 한 가지 문제는 그가 다음 * "공백/공백"*을 원한다는 질문에, 공백은 여러 문자 중 하나를 의미 할 수 있습니다. '.indexOf()'는 여전히 사용 가능하고 여전히 정확할 수 있지만 모든 가능성을 고려하여 루프로 처리해야합니다. –