C# - String.Split() letztes Element Entfernen
Ich habe eine RTB, die geladen wird, mit einer Datei, die wie folgt aussieht:
J6 INT-00113G 227.905 174.994 180 SOIC8
J3 INT-00113G 227.905 203.244 180 SOIC8
U13 EXCLUDES 242.210 181.294 180 QFP128
U3 IC-00276G 236.135 198.644 90 BGA48
U12 IC-00270G 250.610 201.594 0 SOP8
J1 INT-00112G 269.665 179.894 180 SOIC16
J2 INT-00112G 269.665 198.144 180 SOIC16
Möchte ich zum entfernen der letzten Spalte mit dem string.Split () - Methode.
Bisher habe ich:
//Splits the lines in the rich text boxes
string[] lines = richTextBox2.Text.Split('\n');
foreach (var newLine in lines)
{
newLine.Split(' ');
line = line[0] + line[1] + line[2] + line[3] + line[4]; #This is the code that does not work.
}
Jedoch funktioniert das nicht... kennt jemand das problem und wie man dies richtig tun, so dass die Datei wie folgt aussieht?:
J6 INT-00113G 227.905 174.994 180
J3 INT-00113G 227.905 203.244 180
U13 EXCLUDES 242.210 181.294 180
U3 IC-00276G 236.135 198.644 90
U12 IC-00270G 250.610 201.594 0
J1 INT-00112G 269.665 179.894 180
J2 INT-00112G 269.665 198.144 180
EDIT: ich denke auch, dass ich zu string.Split(' ')
jeder Zeile, dass ist schon aufgeteilt?
Das ist offensichtlich nicht zur Arbeit gehen. Sie können nicht schalten Sie ein string-array in einen string.
Wie könnte ich mich über die Befestigung dieser?
Wie könnte ich mich über die Befestigung dieser?
InformationsquelleAutor theNoobGuy | 2011-07-25
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Diese funktionieren könnte (ungetestet):
Sie machen einige Annahmen, erklärt diese die "beste" Lösung, basierend auf den genannten Gründen. Nur der OP weiß, genau, welches Verhalten er will. Zum Beispiel, angenommen, das format der Datei ändern kann, so dass eine weitere Spalte Hinzugefügt, und er will, dass Spalte werden ebenfalls ignoriert. Dann wird das Lösung nicht mehr funktionieren würde, aber die Feste Breite cut-off-Ansatz immer noch. Natürlich, Szenarien, welche die entgegengesetzten Fall könnte leicht sein ausgeheckt, wie gut. Es hängt alles davon ab, was genau das Ziel ist.
Das tut, was ich brauche es! Dan Tao +1 für die Richtigkeit über die OP zu wissen, was gebraucht wird.
Tao: Wahrheit, über die Spalten. Entfernen von zwei Spalten auf diese Weise würde ein Schmerz sein. Ich hasse das zählen von Zeichen =p
In diesem Fall haben Sie dann einige Zeilen ohne Leerzeichen in Ihnen. Also die Lösung oben wird noch nicht Arbeit; es wird nur geben Sie eine leere Zeile, in solchen Fällen. Ist es möglich, Ihre Spalten sind durch tab-Zeichen anstelle von Leerzeichen? Wenn dem so ist, könntest du versuchen
LastIndexOfAny
mit' '
und\t
.InformationsquelleAutor Coeffect
Dies ist ein fixed-width-layout, so dass Sie erreichen können, was Sie wollen, einfach durch abschneiden alle Inhalte, die rechts von der fünften Spalte:
Beispiel-input file:
Ausgabe:
href="http://stackoverflow.com/questions/6823253/c-string-split-remove-last-item/6823312#6823312">Mannimarco Antwort sollten, um Ihnen zu helfen in diesem Fall. (Allerdings, wenn es nicht ein fixed-width-layout-warum hast du dann uns mit fiktiven input?)
Das funktioniert auch, aber nicht garantiert für ein fixierter Breite. Danke aber.
InformationsquelleAutor Dan Tao
Sie sagen nicht was funktioniert nicht..mit der Lines-Eigenschaft, die Sie tun könnten, so etwas wie dieses:
Funktioniert dies nur natürlich, wenn der Raum nur tritt als Trennzeichen zwischen den Spalten.
InformationsquelleAutor BrokenGlass
Dieser denen es ziemlich leicht zu Lesen ....
Dies ist wahrscheinlich in der Nähe der O(n):
InformationsquelleAutor Steve Sheldon
Du bist der einzige, der "kennt das problem". Leider entschied Sie sich nicht, uns zu sagen, was es ist. (Komisch.)
Was ich tun würde, ist das Parsen jeder Zeile, wie Sie sind, und verwenden Sie dann
LastIndexOf()
zu finden, den letzten Platz, und nur schneiden Sie die Zeichenfolge gibt. Sie können Optional übergeben Sie das Ergebnis anTrim()
entfernen Sie alle Leerzeichen.J1 INT-00112G 269.665 179.894 180 SOIC16
. Allerdings muss ich dann split, Linie, indem Sie so etwas wie.Split(' ')
so teilt es durch die Räume, um neue Saiten.. ich werde nach aktualisierten code oben... Aber Recht viel kann ich nicht tun:line[0] + line[1]...;
InformationsquelleAutor Jonathan Wood
Unter der Annahme, dass Ihre Linien sind immer die gleiche Breite dann:
InformationsquelleAutor shf301
Sollten Sie vielleicht Lesen Sie Ihre Datei Zeile für Zeile in den ersten Platz mit readline (), dann split jede Zeile mit split.
InformationsquelleAutor zeFrenchy
InformationsquelleAutor Tejas