2 votes

Comment découper une chaîne si un espace blanc est détecté ?

J'ai quelques chaînes qui arrivent une par une. Si elles font plus de 15 caractères de longueur, j'aimerais découper tout le contenu après 15 caractères, mais pas avant la détection d'un espace blanc (pour le garder lisible).

Ma logique actuelle ressemble à ceci :

                const text  = "Microsoft Server 2012 R2"; // text.length = 24
                let newStr = '';
                if(text.length > 15 ){ // true
                    newStr = text.slice(0, 15)
                }
                console.log(newStr);
                // Résultat souhaité : "Microsoft Server
                // Résultat actuel : "Microsoft Serve"

4voto

anubhava Points 172509

Vous pouvez utiliser ce remplacement regex pour accomplir votre tâche. Cela correspond à 0 ou plusieurs caractères non-blancs après les 15 premiers caractères dans l'entrée.

var s = 'Microsoft Server 2012 R2'
var r = s.replace(/^(.{15}\S*).*$/, '$1')

console.log(r)
//=> Microsoft Server

Démo Regex

1voto

Wiktor Stribiżew Points 100073

Vous pouvez faire correspondre n'importe quels premiers 15 caractères avec [^]{15} / [\s\S]{15} et puis faire correspondre 0 ou plusieurs caractères qui ne sont pas des espaces avec \S*:

const text  = "Microsoft Server 2012 R2";
let newStr = (m=text.match(/^[^]{15}\S*/)) ? m[0] : "";
console.log(newStr);

Notez que . fait correspondre tous les caractères autres que les sauts de ligne, c'est pourquoi je suggère [^] (non-rien) ou son équivalent portable [\s\S] / [\d\D] / [\w\W].

1voto

Nina Scholz Points 17120

Vous pourriez faire correspondre les premières lettres souhaitées et prendre les caractères jusqu'à ce qu'un espace soit trouvé.

 ` var string = "Microsoft Server 2012 R2",
     court = cordes.match (/ ^ . {15} [^] * /) [0];

console.log(court); `

1voto

Sahil Gupta Points 88
fonction hasWhiteSpace(SubText) {

  renvoyer /\s/g.test(SubText);

}

Appelez cette fonction et vérifiez les espaces blancs dans la sous-chaîne, c'est-à-dire SubText qui est une sous-chaîne du texte jusqu'à 15 caractères. Ainsi, vous obtiendrez une valeur booléenne si cette sous-chaîne contient un espace blanc. Cette fonction testera également la présence d'onglets.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X