2014-05-15 2 views
0

Peut-être que c'est une question idiote. Mais je n'ai pas encore trouvé de réponse. J'ai quelques ficelles. Je voudrais les concaténer et ensuite diviser la chaîne résultante dans un moment différent. Je voudrais savoir s'il y a quelque chose de disponible dans le .NET Framework. Les méthodes Join et Split de String fonctionnent assez bien. Le problème est d'échapper au caractère séparateur. Par exemple, je voudrais utiliser le caractère "@" comme séparateur. Si j'ai "String1", "Str @ ing2" et "String3", je voudrais obtenir "String1 @ Str @@ ing2 @ String3".Concaténer et diviser les chaînes

Y at-il quelque chose qui fait ce dont j'ai besoin ou dois-je écrire ma propre fonction?

Merci.

+0

Auriez-vous déjà une chaîne vide qui pourrait faire que deux '@' se trouvent l'un à côté de l'autre? –

+0

Si vous utilisez une bibliothèque CSV? –

+0

@ChrisHaas, je peux éviter cette situation. Aucune bibliothèque CSV. – ufo

Répondre

2

échapper Juste le séparateur sur la manière.

var inputs = ["String1", "[email protected]", "String3"]; 
var joined = string.Join(inputs.Select(i => i.Replace("@", "@@")); 

Vous pouvez ensuite diviser sur un seul @ caractères.

var split = Regex.Split(joined, "(?<[email protected])@([email protected])"); 

Ce test arrière négatif utilise zéro largeur/préanalyse patterns pour affirmer le caractère avant et après le @ est pas un autre @. Vous devez cependant exécuter des tests sur les cas où @ est au début ou à la fin de vos chaînes d'entrée.

+0

Et quand je me suis séparé? – ufo

+0

@ufo - que voulez-vous que se passe-t-il lorsque vous divisez? –

+0

Pour diviser uniquement lorsqu'un "@" apparaît. Votre dernière modification semble répondre à ma question. Je vous remercie. – ufo

0

Appel .Replace("@", "@@") sur chaque chaîne avant de les transmettre à .Join