2012-11-09 2 views
0

J'ai essayé de diviser les chaînes dans .NET CF mais sans succès. Si j'aurais une chaîne comme:String.Split Newlines dans .Net CF

Bonjour

Il

Monde

Je veux chaque mot à stocker dans un tableau de chaînes pour que je puisse les mettre individuellement dans ma cellule DataGrid.

Malheureusement, ce code je ne marche pas sembler enlever les nouvelles lignes:

string text = _scanResult; //Scan result contains the Hello There World string 
string[] lines = text.Split(new Char[] {'\n','\r'); 
for (int x = 0; x < lines.Length; x++) 
{ 
    dt.Rows.Add(lines[x]); 
} 
dataGrid1.DataSource = dt; 

Répondre

2

Utilisez Environment.NewLine à la place, et utiliser StringSplitOptions.RemoveEmptyEntries:

string[] lines = text.Split(new string[] {Environment.NewLine}, 
          StringSplitOptions.RemoveEmptyEntries); 
+3

Mais .NET Compact Framework prend en charge que Char [] non string []. –

+0

@jeraldov - Assez juste. Ce qui précède fonctionnera également avec 'new Char [] {'\ n', '\ r'}'. – Oded

+0

Vous allez vous retrouver avec des entrées vides lorsque vous utilisez '\ n' et '\ r' comme des caractères séparés. LINQ peut exclure ces entrées (avant de convertir .ToList) en utilisant quelque chose comme '.Where (line =>! String.IsNullOrEmpty (line))' –

0

Eh bien, puisque seuls les caractères sont acceptés comme paramètre dans String.Split dans .NET Compact Framework.

Tout ce que j'avais à faire était de remplacer les nouvelles lignes par le caractère "\ n".

Voici le code pour certaines personnes qui pourraient rencontrer le même problème dans le futur.

string text = stringWithNewLines; 
text = text.Replace(Environment.NewLine,"\n"); 
string[] lines = text.Split(new Char[] { '\n' }); 
for (int x = 0; x < lines.Length; x++) 
{ 
    if (!String.IsNullOrEmpty(lines[x])) 
    { 
    dt.Rows.Add(lines[x]); //Add each string to datatable rows for use in datagrid 
    } 
} 
+0

Voter pour remplacer 'lines [x]! =" "' Avec '! String.IsNullOrEmpty (lignes [x]) ' – jp2code

+1

Modifié. lines [x]! = "" avec! String.IsNullOrEmpty (lignes [x]) –

0

Ceci est une version assez simple:

var _scanResult = "foo\r\nbar\r\n"; 

var lines = System.Text.RegularExpressions.Regex.Split(_scanResult, "\r\n") 
      .Where(l => !string.IsNullOrEmpty(l)); 
+0

Gardez à l'esprit: Les anciens mobiles sont antérieurs à LINQ. Je l'aime bien, cependant! – jp2code