공백 만 포함 된 문자열을 감지하는 방법은 무엇입니까? length:’ + str.length); //

하나의 공백을 포함하는 문자열 길이는 항상 1과 같습니다.

alert('My str length: ' + str.length);

공백은 문자이므로 :

str = "   ";
alert('My str length:' + str.length); // My str length: 3

빈 문자열과 공백 만 포함 된 문자열을 어떻게 구분할 수 있습니까? 공백 만 포함 된 문자열을 어떻게 감지 할 수 있습니까?



답변

이를 위해 정규식을 사용하여 문자열의 모든 공백을 제거 할 수 있습니다. 결과 문자열의 길이가 0이면 원본에 공백 만 포함되어 있는지 확인할 수 있습니다. 이 시도:

var str = "    ";
if (!str.replace(/\s/g, '').length) {
  console.log('string only contains whitespace (ie. spaces, tabs or line breaks)');
}

답변

가장 빠른 솔루션은 regex 프로토 타입 함수를 사용하는 것입니다. test ()를 사용 하고 공백이나 줄 바꿈이 아닌 문자를 찾는 것입니다 \S.

if (/\S/.test(str))
{
    // found something other than a space or line break
}

매우 긴 문자열이있는 경우 상당한 차이를 만들 수 있습니다.


답변

Rory의 답변과 유사하게 ECMA 5를 사용하면 이제 str.trim().length정규 표현식을 사용하는 대신 호출 할 수 있습니다 . 결과 값이 0이면 공백 만 포함 된 문자열이있는 것입니다.

if (!str.trim().length) {
  console.log('str is empty!');
}

여기에서 트림에 대한 자세한 내용을 읽을 수 있습니다 .


답변

if(!str.trim()){
  console.log('string is empty or only contains spaces');
}

문자열에서 공백을 제거하려면 String#trim().

문자열이 null인지 정의되지 않았는지 확인하려면 문자열 자체가 거짓인지 여부를 확인할 수 있습니다.이 경우 null, undefined 또는 빈 문자열입니다. 메소드를 호출하려고 시도 null하거나 undefined오류가 발생 하므로이 첫 번째 확인이 필요 합니다. 공백 만 포함되어 있는지 확인하기 위해 트리밍 후 문자열이 거짓인지 확인할 수 있습니다. 즉, 해당 지점에서 빈 문자열임을 의미합니다.

if(!str || !str.trim()){
   //str is null, undefined, or contains only spaces
}

이것은 선택적 연결 연산자를 사용하여 단순화 할 수 있습니다 .

if(!str?.trim()){
   //str is null, undefined, or contains only spaces
}

변수가 문자열이라는 것이 확실한 경우 두 번째 확인 만 필요합니다.

if(!str.trim()){
   console.log("str is empty or contains only spaces");
}

답변

문자열에 대한 트림 함수를 생성하여 문자열 값을 트림 할 수 있습니다.

String.prototype.trim = function () {
    return this.replace(/^\s*/, "").replace(/\s*$/, "");
}

이제 모든 문자열에 사용할 수 있으며 다음과 같이 사용할 수 있습니다.

str.trim().length// Result will be 0

이 방법을 사용하여 문자열의 시작과 끝에서 공백을 제거 할 수도 있습니다.

"  hello  ".trim(); // Result will be "hello"

답변

트림 함수를 생성하여 문자열 값 트림

var text = "  ";
if($.trim(text.length == 0){
  console.log("Text is empty");
}
else
{
  console.log("Text is not empty");
}