Wie würden Sie sich von r n teilen, wenn String.split (String []) nicht existiert?
-
19-09-2019 - |
Frage
Verwenden des .NET-Mikroframeworks, der eine wirklich abgeschnittene Version von C#ist. Zum Beispiel, System.String Kaum eine der Leckereien, die wir im Laufe der Jahre genossen haben.
Ich muss ein Textdokument in Zeilen aufteilen, was bedeutet, dass ich durch r n aufgeteilt wird. String.Split liefert jedoch nur einen Split per char, nicht per String.
Wie kann ich ein Dokument auf effiziente Weise in Linien aufteilen (z. B. nicht wahnsinnig über jedes Zeichen im DOC)?
PS System.String fehlt auch eine Ersatzmethode, damit nicht funktioniert.
PPS Regex ist auch nicht Teil des Mikroframewerks.
Lösung
Du kannst tun
string[] lines = doc.Split('\n');
for (int i = 0; i < lines.Length; i+= 1)
lines[i] = lines[i].Trim();
Angenommen, das µF unterstützt TRIM () überhaupt. TRIM () entfernen alle Whitespace, das kann nützlich sein. Ansonsten verwenden TrimEnd('\r')
Andere Tipps
Ich würde in dem Dokument über jedes Zeichen hinweg schauen, weil dies eindeutig erforderlich ist. Wie denkst du String.Split
funktioniert? Ich würde versuchen, dies jedoch nur einmal auf jeden Charakter zu schlagen.
Halten Sie eine Liste der bisher gefundenen Saiten. Verwenden IndexOf
Wenn Sie wiederholt den aktuellen Versatz in die Zeichenfolge übergeben (dh die vorherige Übereinstimmung + 2).
Wie kann ich ein Dokument auf effiziente Weise in Linien aufteilen (z. B. nicht wahnsinnig über jedes Zeichen im DOC)?
Wie denkst du den Einbau? Split
funktioniert?
Implementieren Sie es einfach selbst als Erweiterungsmethode.
Wie wäre es mit:
string path = "yourfile.txt";
string[] lines = File.ReadAllLines(path);
Oder
string content = File.ReadAllText(path);
string[] lines = content.Split(
Environment.NewLine.ToCharArray(),
StringSplitOptions.RemoveEmptyEntries);
Lesen Sie das .NET Micro Framework 3.0, Dieser Code kann funktionieren:
string line = String.Empty;
StreamReader reader = new StreamReader(path);
while ((line = reader.ReadLine()) != null)
{
// do stuff
}
Dies kann in einem Szenario helfen:
StreamReader reader = new StreamReader(file);
string _Line = reader.ReadToEnd();
string IntMediateLine = string.Empty;
IntMediateLine = _Line.Replace("entersign", "");
string[] ArrayLineSpliter = IntMediateLine.Split('any specail chaarater');
Wenn Sie eine mögen möchten Mikroframework kompatibel Split -Funktion, die für eine ganze Arbeit funktioniert Zeichenfolge, Hier ist einer, der den Trick macht, ähnlich der regulären Frameworks -Version unter Verwendung von 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));
}