Comment voulez-vous diviser par \ r \ n si String.Split (String []) n'existait pas?
-
19-09-2019 - |
Question
Utilisation du MicroFramework .NET qui est une version vraiment coupé vers le bas de C #. Par exemple, System.String a à peine un des goodies que nous » avons bénéficié au cours des années.
Je dois diviser un document texte en lignes, ce qui signifie que le fractionnement par \ r \ n. Cependant, String.Split ne fournit qu'une division par char, non par chaîne.
Comment découper un document en ligne d'une manière efficace (par exemple pas en boucle éperdument à travers chaque caractère dans la doc)?
P.S. System.String manque également une méthode Replace, de sorte que cela ne fonctionnera pas.
P.P.S. Regex ne fait pas partie du MicroFramework soit.
La solution
Vous pouvez faire
string[] lines = doc.Split('\n');
for (int i = 0; i < lines.Length; i+= 1)
lines[i] = lines[i].Trim();
En supposant que le uF supporte trim () du tout. Trim () supprimera tous les espaces, qui pourraient être utiles. Sinon, utilisez TrimEnd('\r')
Autres conseils
Je voudrais boucle à travers chaque caractère dans le document, parce que c'est clairement nécessaire. Comment pensez-vous des œuvres de String.Split
? Je voudrais essayer de le faire que de frapper chaque personnage une fois, cependant.
Gardez une liste de chaînes trouvées jusqu'à présent. Utilisez IndexOf
à plusieurs reprises, en passant dans le courant de décalage dans la chaîne (à savoir la correspondance précédente + 2).
Comment découper un document en ligne d'une manière efficace (par exemple pas en boucle éperdument à travers chaque caractère dans la doc)?
Comment pensez-vous que les travaux de Split
intégré?
Il suffit de ré-écrire vous-même comme une méthode d'extension.
Qu'en est-il:
string path = "yourfile.txt";
string[] lines = File.ReadAllLines(path);
ou
string content = File.ReadAllText(path);
string[] lines = content.Split(
Environment.NewLine.ToCharArray(),
StringSplitOptions.RemoveEmptyEntries);
.NET Micro Framework 3.0 , ce code peut travail:
string line = String.Empty;
StreamReader reader = new StreamReader(path);
while ((line = reader.ReadLine()) != null)
{
// do stuff
}
Cela peut aider dans un scénario:
StreamReader reader = new StreamReader(file);
string _Line = reader.ReadToEnd();
string IntMediateLine = string.Empty;
IntMediateLine = _Line.Replace("entersign", "");
string[] ArrayLineSpliter = IntMediateLine.Split('any specail chaarater');
Si vous souhaitez MicroFramework compatible fonction split qui fonctionne pour un ensemble chaîne de caractères , voici celui qui fait le tour, semblable à la version des cadres réguliers en utilisant StringSplitOptions.None:
private static string[] Split(string s, string delim)
{
if (s == null) throw new NullReferenceException();
// Declarations
var strings = new ArrayList();
var start = 0;
// Tokenize
if (delim != null && delim != "")
{
int i;
while ((i = s.IndexOf(delim, start)) != -1)
{
strings.Add(s.Substring(start, i - start));
start = i + delim.Length;
}
}
// Append left over
strings.Add(s.Substring(start));
return (string[]) strings.ToArray(typeof(string));
}