C# - Chaîne.Split() Supprimer le dernier élément
J'ai un SYSTÈME qui est chargé avec un fichier qui ressemble à ça:
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
Je veux supprimer la dernière colonne à l'aide de la chaîne.Méthode Split ().
Pour l'instant j'ai:
//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.
}
Cependant cela ne fonctionne pas... quelqu'un sait-il le problème et comment le faire correctement afin que le fichier ressemble à ceci?:
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: je pense aussi que j'ai besoin de string.Split(' ')
chaque ligne qui est déjà fendu?
Ça n'est évidemment pas d'aller travailler. Vous ne pouvez pas transformer un tableau de chaîne dans une chaîne.
Comment pourrais-je aller sur la résolution de ce?
Comment pourrais-je aller sur la résolution de ce?
OriginalL'auteur theNoobGuy | 2011-07-25
Vous devez vous connecter pour publier un commentaire.
Cela pourrait fonctionner (non testé):
Vous êtes en faisant certaines hypothèses dans une déclaration à la "meilleure" solution fondée sur des motifs invoqués. Seuls les OP le sait exactement ce comportement qu'il veut. Par exemple, supposons que le format de fichier peut changer à ce qu'une autre colonne est ajoutée et il veut que la colonne pour être ignoré. Ensuite ce la solution serait de ne plus fonctionner, mais la largeur fixe de coupure approche encore. Bien sûr, les scénarios illustrant le cas contraire pourrait facilement être concocté à aussi bien. Tout dépend exactement ce que le but est.
Ce n'est que j'en ai besoin! Dan Tao +1 pour être correcte sur les OP de savoir ce qui est nécessaire.
Tao: Vrai sur les colonnes. La suppression de deux colonnes de cette façon pourrait être une douleur. J'ai juste la haine de comptage de caractères =p
Dans ce cas, alors vous avez quelques lignes sans les espaces. Si la solution ci-dessus ne seront toujours pas ; il va juste vous donner une ligne vide dans de tels cas. Est-il possible que vos colonnes sont délimitées par des caractères de tabulation plutôt que des espaces? Si oui, vous pourriez essayer
LastIndexOfAny
avec' '
et\t
.OriginalL'auteur Coeffect
C'est d'une largeur fixe de mise en page, de sorte que vous pouvez accomplir ce que vous voulez tout simplement en coupant tout le contenu à la droite de la cinquième colonne:
Exemple de fichier d'entrée:
De sortie:
href="http://stackoverflow.com/questions/6823253/c-string-split-remove-last-item/6823312#6823312">Mannimarco réponse de devrait t'aider dans ce cas. (Toutefois, si ce n'est pas une largeur fixe de mise en page, alors pourquoi vous nous fournissez de fiction d'entrée?)
Cela fonctionne, mais pas de garantie pour un non, largeur. Je vous remercie bien.
OriginalL'auteur Dan Tao
Vous ne dites pas ce ne fonctionne pas..en utilisant les Lignes de propriété, vous pourriez faire quelque chose comme ceci:
Cela ne fonctionne bien sûr, si l'espace seulement se produit comme séparateur entre les colonnes.
OriginalL'auteur BrokenGlass
Ceux assez facile à lire ....
Celui-ci est probablement proche de O(n):
OriginalL'auteur Steve Sheldon
Vous êtes le seul qui "connaît le problème". Malheureusement, vous avez décidé de ne pas nous dire ce que c'est. (Étrange.)
Ce que je voudrais faire est d'analyser chaque ligne que vous, et ensuite utiliser
LastIndexOf()
pour trouver le dernier espace, et de couper la chaîne. En option, vous pouvez passer le résultat àTrim()
pour supprimer les espaces de fin.J1 INT-00112G 269.665 179.894 180 SOIC16
. Cependant, j'ai besoin de briser cette ligne par quelque chose comme.Split(' ')
de sorte qu'il se sépare par des espaces pour obtenir de nouvelles chaînes.. je vais mettre à jour le code ci-dessus... Mais à peu près je ne peux pas faire:line[0] + line[1]...;
OriginalL'auteur Jonathan Wood
En supposant que vos lignes sont toujours de la même largeur, puis:
OriginalL'auteur shf301
Vous devriez probablement lire votre fichier ligne par ligne, en premier lieu, utiliser readline (), puis diviser chaque ligne avec split.
OriginalL'auteur zeFrenchy
OriginalL'auteur Tejas