it-swarm.com.de

"IsNullOrWhitespace" in JavaScript?

Gibt es ein JavaScript-Äquivalent zu .NET String.IsNullOrWhitespace , damit ich überprüfen kann, ob ein Textfeld auf der Clientseite sichtbaren Text enthält?

Ich mache dies lieber auf der Clientseite, als den Textfeldwert zurückzuschicken, und verlasse mich nur auf die serverseitige Validierung, obwohl ich dies auch tun werde.

47
Scott

Es ist leicht genug, um selbst zu rollen :

function isNullOrWhitespace( input ) {

    if (typeof input === 'undefined' || input == null) return true;

    return input.replace(/\s/g, '').length < 1;
}
65
Dexter

Für eine prägnante, moderne browserübergreifende Implementierung müssen Sie Folgendes tun:

function isNullOrWhitespace( input ) {
  return !input || !input.trim();
}

Hier ist das jsFiddle . Hinweise unten.


Die aktuell akzeptierte Antwort kann vereinfacht werden zu:

function isNullOrWhitespace( input ) {
  return (typeof input === 'undefined' || input == null)
    || input.replace(/\s/g, '').length < 1;
}

Und die Falschheit noch besser zu nutzen:

function isNullOrWhitespace( input ) {
  return !input || input.replace(/\s/g, '').length < 1;
}

trim () ist in allen aktuellen Browsern verfügbar , so dass wir den Regex optional löschen können:

function isNullOrWhitespace( input ) {
  return !input || input.trim().length < 1;
}

Und fügen Sie der Mischung etwas mehr Falschheit hinzu, um die endgültige (vereinfachte) Version zu erhalten:

function isNullOrWhitespace( input ) {
  return !input || !input.trim();
}
48
user4942583

nein, aber du könntest einen schreiben

function isNullOrWhitespace( str )
{
  // Does the string not contain at least 1 non-whitespace character?
  return !/\S/.test( str );
}
2
Peter Bailey

Probieren Sie es aus 

/**
  * Checks the string if undefined, null, not typeof string, empty or space(s)
  * @param {any} str string to be evaluated
  * @returns {boolean} the evaluated result
*/
function isStringNullOrWhiteSpace(str) {
    return str === undefined || str === null
                             || typeof str !== 'string'
                             || str.match(/^ *$/) !== null;
}

Sie können es so verwenden 

isStringNullOrWhiteSpace('Your String');
0

Wenn Sie die relevanten Teile der beiden besten Antworten ziehen, erhalten Sie Folgendes:

function IsNullOrWhitespace(input) {
    if (typeof input === 'undefined' || input == null) return true;
    return !/\S/.test(input); // Does it fail to find a non-whitespace character?
}

Der Rest dieser Antwort gilt nur für diejenigen, die an den Leistungsunterschieden zwischen dieser Antwort und der Antwort von Dexter interessiert sind. Beide führen zu den gleichen Ergebnissen, dieser Code ist jedoch etwas schneller. 

Verwenden Sie auf meinem Computer einen QUnit-Test mit dem folgenden Code:

var count = 100000;
var start = performance.now();
var str = "This is a test string.";
for (var i = 0; i < count; ++i) {
    IsNullOrWhitespace(null);
    IsNullOrWhitespace(str);
}
var end = performance.now();
var elapsed = end - start;
assert.ok(true, "" + count + " runs of IsNullOrWhitespace() took: " + elapsed + " milliseconds.");

Die Ergebnisse waren:

  • RegExp.replace-Methode = 33 - 37 Millisekunden
  • RegExp.test-Methode = 11 - 14 Millisekunden
0
John Fisher

Sie können den regulären Ausdruck /\S/ verwenden, um zu testen, ob ein Feld Leerzeichen enthält, und dies mit einer Nullprüfung kombinieren.

Ex:

if(textBoxVal === null || textBoxVal.match(/\S/)){
    // field is invalid (empty or spaces)
}
0
McStretch

trim() ist eine nützliche String-Funktion, die JS fehlt. 

Fügen Sie es hinzu:

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

Dann: if (document.form.field.value.trim() == "")

0
T4NK3R

Sie müssen Ihre eigenen schreiben:

function isNullOrWhitespace(strToCheck) {
    var whitespaceChars = "\s";
    return (strToCheck === null || whitespaceChars.indexOf(strToCheck) != -1);
}
0
smas