2
votes

Textarea vers tableau filtré Javascript

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"


0 commentaires

4 Réponses :


0
votes

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,' ')


3 commentaires

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 + /)



3
votes

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:

  1. Filtrer les lignes vides
  2. Divisez chaque ligne sur plusieurs espaces (pour ne pas diviser pomme verte comme vous l'avez dit dans le commentaire)
  3. Se débarrasse des éléments vides / espaces des tableaux imbriqués

<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)


5 commentaires

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!



0
votes

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.


2 commentaires

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 ("")



0
votes

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


1 commentaires

Pouvez-vous fournir une démonstration de JSfiddle?