0
votes

Recherche dans la chaîne et la citation autour de l'événement

Travailler avec JavaScript, j'ai besoin de rechercher une entrée de chaîne à partir d'un utilisateur et de remplacer les occurrences des points-virgules avec des virgules. Le problème que j'ai rencontré est que je dois être capable de rechercher la chaîne des virgules qui existent déjà et citons autour de la dernière et la prochaine occurrence du point-virgule.

exemple: L'entrée utilisateur est 12345; Joran, Michael; 02; 17; 63 Il doit être converti en 12345, "Joran, Michael", 02,17,63

Mon inclus est capable de localiser la survenue d'une virgule dans la chaîne d'origine varch = source.Inclut (","); et mon remplacement est var conversion = source.replace (/; / g, ","); qui fonctionne bien, il suffit de comprendre comment se rendre au dernier point-virgule / prochain pour placer les devis.

Utilisation d'un IF / else Selon Si SRCH Évalue à True - Si TRUE, ajoutez les guillemets, puis convertissez le reste de la chaîne et revenez à l'utilisateur; Si faux, convertit et retour.

Je suis sûr qu'il y a un moyen de faire cela avec regex qui ne me vient pas encore venu à moi, alors aucune suggestion sur ce qu'il faut regarder serait formidable.


1 commentaires

Est votre format de sortie CSV? Votre format d'entrée est-il similaire bien défini? (Par exemple, les données peuvent-elles jamais contenir des points-virgules échappés, des guillemets ou des nouvelles lignes neuves?)


3 Réponses :


0
votes

Je ferais cela en deux étapes. Premier match non-; code> qui ont au moins un , code> et les entourez avec des guillemets. Puis remplacez tout ; code> s dans le résultat avec , code>:

p>

console.log(
  '12345;Joran,Michael;02;17;63'
    .replace(/[^;,]*,[^;]*/g, '"$&"')
    .replace(/;/g, ',')
);


1 commentaires

$ & est ce que j'oublais de trouver le match! Merci! Cela fait trop longtemps que je devais travailler avec regex.



0
votes

diviser la chaîne par ; xxx

qui vous donne un tableau.

Convertissez les éléments qui incluent un ',' à "$ {élément}" xxx < P> Convertir le tableau arrière en chaîne xxx


0 commentaires

0
votes
    var str = '12345;Joran,Michael;02;17;63';
    var arr = str.split(";");
    var letters = /^[A-Za-z]/;
    var final_str = "";
    for (var i = 0; i < arr.length; i++) {
        final_str = arr[i].match(letters)?final_str +'"'+ arr[i]+'"'+",":final_str + arr[i]+",";
    }
    console.log(final_str.substring(0,final_str.length -1));

0 commentaires