2012-07-20 2 views
0

이름과 숫자가 포함 된 문자열 배열을 정렬하려고합니다. 하지만 대신 상위 때문에 "1"< "8"< "9"에서 "요한 복음 10 장 테스트"있는의RegExp : 숫자 앞에 숫자 자릿수를 입력하십시오.

John 8 test 
John 9 test 
John 10 test 

같은 주문을 얻을 수있는 영숫자 정렬 순서를 향상시키고 자. 내 생각을 정렬 할 수 있도록 내부적으로 배열을 임의의 숫자 bevore 숫자의 자릿수를 삽입하는 것입니다됩니다 : 지금 영숫자 올바르게 정렬 된 배열입니다

John 18 test 
John 19 test 
John 210 test 

합니다.

숫자를 삽입하는 방법에 대한 아이디어가 있으면 쉽게 수치를 나타낼 수 있습니까? RegExp가 완벽 할 것입니다. 나는 nodejs/JavaScript에서이 모든 것을하고있다.

미리 감사드립니다. heinob

+1

그것은 무엇보다 9 자리 또는 앞에 0이 있다면? 제 생각에 당신이 정말로 필요로하는 것은 자연 정렬입니다 (http://stackoverflow.com/q/2802341/7586). – Kobi

+0

실제로 문제가 될 수 있지만 내 경우에는 발생하지 않습니다. 수치는 0으로 시작하지 않고 9 자리가 넘지 않는 물리적 측정 값이기 때문입니다. – heinob

답변

1

내가 나 자신을 답변자 (를) 발견 :

var a = "John 352 Name 1 test 23 better"; 
a.replace(/\d+/g, function(match, number) { 
    return match.length + match; 
}); 

내가 :-) 원하는 것을

+1

+1 당신이 고칠 다행. – alex

+0

귀하의 헌신에 감사드립니다. 당신은 명확하게 가장 빠른 답변 가격을 얻습니다. – heinob

관련 문제