Długość łańcucha zawierającego jedną spację jest zawsze równa 1:
alert('My str length: ' + str.length);
Przestrzeń to znak, więc:
str = " ";
alert('My str length:' + str.length); // My str length: 3
Jak odróżnić pusty ciąg od ciągu zawierającego tylko spacje? Jak mogę wykryć ciąg zawierający tylko spacje?
javascript
Luca
źródło
źródło
0
? Lub użyj wyrażenia regularnego, aby dopasować tylko białe znaki ...Odpowiedzi:
Aby to osiągnąć, możesz użyć wyrażenia regularnego, aby usunąć wszystkie białe znaki z ciągu. Jeśli długość otrzymanego ciągu to
0
, możesz być pewien, że oryginał zawierał tylko spacje. Spróbuj tego:var str = " "; if (!str.replace(/\s/g, '').length) { console.log('string only contains whitespace (ie. spaces, tabs or line breaks)'); }
źródło
Najszybszym rozwiązaniem byłoby użycie funkcji prototypu wyrażenia regularnego regex test () i wyszukanie dowolnego znaku, który nie jest spacją ani podziałem wiersza
\S
:if (/\S/.test(str)) { // found something other than a space or line break }
Jeśli masz bardzo długi sznurek, może to mieć znaczący wpływ.
źródło
Podobnie jak w przypadku odpowiedzi Rory'ego, dzięki ECMA 5 możesz teraz po prostu zadzwonić
str.trim().length
zamiast używać wyrażenia regularnego. Jeśli wynikowa wartość to 0, wiesz, że masz ciąg zawierający tylko spacje.if (!str.trim().length) { console.log('str is empty!'); }
Możesz przeczytać więcej o wykończeniu tutaj .
źródło
if(!str.trim()){ console.log('string is empty or only contains spaces'); }
Usunięcie białych znaków z łańcucha można wykonać za pomocą
String#trim()
.Aby sprawdzić, czy ciąg jest pusty, czy nieokreślony, można sprawdzić, czy sam łańcuch jest błędny, w takim przypadku jest to pusty, niezdefiniowany lub pusty. To pierwsze sprawdzenie jest konieczne, ponieważ próba wywołania metod na
null
lubundefined
spowoduje błąd. Aby sprawdzić, czy zawiera tylko spacje, można sprawdzić, czy po przycięciu ciąg jest uszkodzony, co oznacza, że jest w tym miejscu pusty.if(!str || !str.trim()){ //str is null, undefined, or contains only spaces }
Można to uprościć za pomocą opcjonalnego operatora łańcuchowego .
if(!str?.trim()){ //str is null, undefined, or contains only spaces }
Jeśli masz pewność, że zmienna będzie ciągiem znaków, konieczne jest tylko drugie sprawdzenie.
if(!str.trim()){ console.log("str is empty or contains only spaces"); }
źródło
Możesz przyciąć wartość ciągu, tworząc funkcję przycinania dla swoich ciągów znaków.
String.prototype.trim = function () { return this.replace(/^\s*/, "").replace(/\s*$/, ""); }
teraz będzie dostępny dla każdego twojego Stringa i możesz go używać jako
str.trim().length// Result will be 0
Możesz również użyć tej metody, aby usunąć spacje na początku i na końcu ciągu, tj
" hello ".trim(); // Result will be "hello"
źródło
Przytnij wartość ciągu, tworząc funkcję przycinania
var text = " "; if($.trim(text.length == 0){ console.log("Text is empty"); } else { console.log("Text is not empty"); }
źródło