Cette fonction vérifie les autres types d'espaces, et pas seulement les espaces (tabulation, retour chariot, etc.).
import some from 'lodash/fp/some'
const whitespaceCharacters = [' ', ' ',
'\b', '\t', '\n', '\v', '\f', '\r', `\"`, `\'`, `\\`,
'\u0008', '\u0009', '\u000A', '\u000B', '\u000C',
'\u000D', '\u0020','\u0022', '\u0027', '\u005C',
'\u00A0', '\u2028', '\u2029', '\uFEFF']
const hasWhitespace = char => some(
w => char.indexOf(w) > -1,
whitespaceCharacters
)
console.log(hasWhitespace('a')); // a, false
console.log(hasWhitespace(' ')); // space, true
console.log(hasWhitespace(' ')); // tab, true
console.log(hasWhitespace('\r')); // carriage return, true
Si vous ne voulez pas utiliser Lodash alors voici une simple some
mise en œuvre avec 2 s
:
const ssome = (predicate, list) =>
{
const len = list.length;
for(const i = 0; i<len; i++)
{
if(predicate(list[i]) === true) {
return true;
}
}
return false;
};
Il suffit alors de remplacer some
con ssome
.
const hasWhitespace = char => some(
w => char.indexOf(w) > -1,
whitespaceCharacters
)
Pour ceux qui sont dans Node, utilisez :
const { some } = require('lodash/fp');
0 votes
Votre logique est à l'envers, vrai signifie faux.
2 votes
Tu retournes false si la chaîne a des espaces, ta logique est inversée.
0 votes
La regex en question vérifie les motifs comportant uniquement des espaces dans les chaînes de caractères, commençant par un espace, comportant un ou plusieurs espaces et se terminant par un espace.