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. p>
exemple:
L'entrée utilisateur est Mon inclus est capable de localiser la survenue d'une virgule dans la chaîne d'origine 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. p>
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. P> 12345; Joran, Michael; 02; 17; 63 Code> Il doit être converti en 12345, "Joran, Michael", 02,17,63 Code> P> P>
varch = source.Inclut (","); code> et mon remplacement est var conversion = source.replace (/; / g, ","); code> qui fonctionne bien, il suffit de comprendre comment se rendre au dernier point-virgule / prochain pour placer les devis. p>
3 Réponses :
Je ferais cela en deux étapes. Premier match non- p> ; code> qui ont au moins un , code> et les entourez avec des guillemets. Puis remplacez tout ; code> s dans le résultat avec , code>: console.log(
'12345;Joran,Michael;02;17;63'
.replace(/[^;,]*,[^;]*/g, '"$&"')
.replace(/;/g, ',')
);
$ & est ce que j'oublais de trouver le match! Merci! Cela fait trop longtemps que je devais travailler avec regex.
diviser la chaîne par qui vous donne un tableau. p> Convertissez les éléments qui incluent un ; code> ',' code> à "$ {élément}" code> p>
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));
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?)