J'essaie de prendre la valeur de textarea, de la diviser en différentes propriétés.
Données dans textfield (Ceci est un exemple, il y a beaucoup plus d'espaces dans l'entrée réelle):
"name","lastname","age","fruit" "john","doe","22";"apple" "eric", "jonsson","23","apple"
4 Réponses :
Veuillez essayer
string.split(" ");
Le regex remplacera tout l'espace par un espace
alors vous pouvez utiliser split comme d'habitude
var string = $('#textareaID').val().replace(/\s+/g,' ')
Je reçois l'erreur suivante: $ (...). Val (...) n'est pas une fonction
désolé j'ai oublié la "fonction de remplacement"
ou simplement .split (/ \ s + /)
Vous pouvez utiliser le fractionnement d'espaces après celui-ci pour une nouvelle ligne.
Le code ci-dessous additionne votre fractionnement de nouvelle ligne avec les opérations:
pomme verte comme vous l'avez dit dans le commentaire)
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<textarea id="textareaID">
name lastname age fruit
john doe 22 green apple
eric jonsson 23 apple
</textarea>
// This is your code
var textareaData = $('#textareaID').val().split('\n');
// This is the extra code you can add (split whitespaces and filter out resulting ones)
var words = textareaData
.filter(x => x.length !== 0)
.map(x => x.split(/(\s\s+)/))
.map(x => x.filter(el => el.trim()));
console.log(words)
Hmm, ça marche, presque. Il compte également les espaces blancs comme propriété. Savez-vous comment vous en débarrasser?
Ajout d'un exemple de travail avec les commentaires supplémentaires que vous avez fournis.
Dans mes tableaux, j'ai des tableaux qui ont des espaces mais qui sont filtrés comme leur propre exemple de tableau "pomme verte", et le résultat est "vert", "pomme", mais je veux "pomme verte" ... Êtes-vous capable d'aider ici? (Cela fonctionne comme un charme sauf cette erreur).
Ensuite, l'expression régulière peut être modifiée pour correspondre à plus d'un espace en convertissant \ s + en \ s \ s + . Ajouté avec un exemple de pomme verte , vérifiez-le.
Cela l'a corrigé! Merci!
Essayez de laisser un espace entre les mots avec une expression régulière:
var textDataArray = textData.split(" ");
Puis divisez-le à nouveau avec les espaces:
var textData = textareadataData.replace(/\s+/g, " ");
Et Voilà. Vous pouvez le faire en une seule ligne, mais je l'ai fait en deux pour l'expliquer.
Je reçois l'erreur suivante: $ (...). Val (...) n'est pas une fonction @Maxime a publié la même chose
Bien sûr, si vous écrivez ´ $ ('# textareaID'). Val () (/ \ s + / g, '') ´ vous obtiendrez cette erreur, mais vous devez l'écrire comme ceci: $ ('# textareaID') .val (). replace (/ \ s + / g, "") .split ("")
Vous pouvez utiliser le code suivant:
$('#textareaID').val().split('\n').map(val => val.trim().replace(/[ ]+/g, " ").split(" "));
Pour expliquer le code:
$ ('# textareaID'). val (). split ( '\ n') est votre code
.map () itère sur toutes les lignes
val.trim () supprime les espaces blancs externes
replace (/ [] + / g, "") supprime tous les espaces blancs dupliqués
split ("" ) divise tout
Pouvez-vous fournir une démonstration de JSfiddle?