J'ai une chaîne "4,6,8\n9,4"
Je veux diviser ceci basé sur, et\n
Le tableau de sortie doit être
4
6
8
9
4
Edit:
Maintenant, je lis la chaîne depuis la console, quand j'entre une chaîne comme ci-dessus dans la console, dans le code derrière je reçois comme "4,6,8\\n9,4"
. Maintenant que je veux diviser en utilisant "," and "\\n"
. Comment puis-je changer l'expression?
Utilisez string.Split (char [])
string strings = "4,6,8\n9,4";
string [] split = strings .Split(new Char [] {',' , '\n' });
[~ # ~] éditer [~ # ~]
Essayez de suivre si vous obtenez des éléments vides inutiles. Méthode String.Split (String [], StringSplitOptions)
string [] split = strings .Split(new Char [] {',' , '\n' },
StringSplitOptions.RemoveEmptyEntries);
EDIT2
Cela fonctionne pour votre question mise à jour. Ajoutez tous les caractères fractionnés nécessaires au char []
.
string [] split = strings.Split(new Char[] { ',', '\\', '\n' },
StringSplitOptions.RemoveEmptyEntries);
Une autre option consiste à utiliser Regex.Split . Ceci est utile lorsque les séquences scindées sont plus complexes. Par exemple, si des espaces peuvent également faire partie des délimiteurs de division tels que:
"4,6,8 , 9\\n\\n4"
Ensuite:
using System.Text.RegularExpressions;
var i = "4,6,8 , 9\n\n4";
var o = Regex.Split(i, @"[,\s\n]+");
// now o is:
// new string[] { "4", "6", "8", "9" }
Notez que l’expression rationnelle utilisée est "plus acceptante" - elle ignore l’espace vide entre les\n et accepte "4 6 8 9 4" de la même manière - de sorte que le précédent indique un point: il y a plus qu'un moyen de peler un chat.
Bonne codage.
var s = "4,6,8\n9,4";
var split = s.Split(new char[]{',', '\n'});
Mais cela doit être une dupe ...
EDIT : Adressant le commentaire.
Ce code:
static void Main(string[] args)
{
var s = "4,6,8\n9,4";
foreach (var a in s.Split(new char[] { ',', '\n' }))
System.Diagnostics.Debug.WriteLine(a);
}
Sortie ceci:
4
6
8
9
4
EDIT : La lecture des entrées depuis la console est différente. \n
est différent lorsqu'il est entré manuellement.
static void Main(string[] args)
{
var s = "4,6,8\\n9,4";
foreach (var a in s.Split(new string[] { ",", "\\n" }, StringSplitOptions.RemoveEmptyEntries))
System.Diagnostics.Debug.WriteLine(a);
}
string tosplit = "4,6,8\n9,4";
var split = tosplit.Split(new Char [] {',', '\n' });
Juste au cas où vous n'imprimez pas/ne le voyez pas correctement:
split.ToList().ForEach(Console.WriteLine);
Pouvez-vous faire un string.Replace ('\ n', ',') suivi du string.split (',')?