Development Tip

공백으로 문자열을 분할하고 정규 표현식을 사용하여 선행 및 후행 공백을 단어 배열로 무시하는 방법은 무엇입니까?

yourdevel 2020. 11. 3. 19:23
반응형

공백으로 문자열을 분할하고 정규 표현식을 사용하여 선행 및 후행 공백을 단어 배열로 무시하는 방법은 무엇입니까?


일반적으로 JavaScript에서 다음 코드를 사용하여 문자열을 공백으로 분할합니다.

"The quick brown fox jumps over the lazy dog.".split(/\s+/);
// ["The", "quick", "brown", "fox", "jumps", "over", "the", "lazy", "dog."]

물론 이것은 단어 사이에 여러 개의 공백 문자가있는 경우에도 작동합니다.

"The  quick brown fox     jumps over the lazy   dog.".split(/\s+/);
// ["The", "quick", "brown", "fox", "jumps", "over", "the", "lazy", "dog."]

문제는 선행 또는 후행 공백이있는 문자열이있는 경우 결과 문자열 배열이 배열의 시작 및 / 또는 끝에 빈 문자를 포함 할 때입니다.

"  The quick brown fox jumps over the lazy dog. ".split(/\s+/);
// ["", "The", "quick", "brown", "fox", "jumps", "over", "the", "lazy", "dog.", ""]

이러한 빈 문자를 제거하는 것은 사소한 작업이지만 가능하다면 정규 표현식 내에서 처리하고 싶습니다. 이 목표를 달성하기 위해 내가 사용할 수있는 정규식을 아는 사람이 있습니까?


공백이 아닌 비트에 더 관심이있는 경우 공백으로 분할하는 대신 공백이 아닌 비트를 일치시킬 수 있습니다.

"  The quick brown fox jumps over the lazy dog. ".match(/\S+/g);

다음이 반환됩니다 null.

"   ".match(/\S+/g)

따라서 배우기 가장 좋은 패턴은 다음과 같습니다.

str.match(/\S+/g) || []

" The quick brown fox jumps over the lazy dog. ".trim().split(/\s+/);


공백 시퀀스에서 분할하는 대신 공백이 아닌 시퀀스를 일치시킬 수 있습니다.

"  The quick brown fox jumps over the lazy dog. ".match(/\S+/g)

다른 코드처럼 우아하지는 않지만 이해하기 매우 쉽습니다.

    countWords(valOf)
    {
        newArr[];
        let str = valOf;
        let arr = str.split(" ");

        for (let index = 0; index < arr.length; index++) 
       {
           const element = arr[index];
           if(element)
           {
              this.newArr.push(element);
           }
       }
       this.NumberOfWords = this.newArr.length;

       return this.NumberOfWords;
   }

참고 URL : https://stackoverflow.com/questions/14912502/how-do-i-split-a-string-by-whitespace-and-ignoring-leading-and-trailing-whitespa

반응형