2011-06-09 6 views
3

Je lis actuellement dans un fichier texte en utilisant VB.NetSupprimer « invisibles » Caractères de contrôle dans VB.Net

Dim fileReader As String 
fileReader = My.Computer.FileSystem.ReadAllText(file) 

fichier contient plusieurs lignes de texte et quand je l'ai lu dans le fichier texte, il sait qu'ils sont sur des lignes séparées et les imprime en conséquence.

Toutefois, lorsque j'essaie de diviser fileReader en un tableau des différentes lignes, le saut de ligne semble rester là, même si j'utilise Split(ControlChars.Cr) ou Split(ControlChars.NewLine). Il sera divisé avec succès dans les lignes séparées, mais quand je l'affiche, il va "pousser" le texte sur une ligne, comme le saut de ligne est toujours là ...

Est-ce que quelqu'un a des idées sur ce qui se passe et comment je peux enlever ces caractères de contrôle "invisibles".

fichier texte:


Test2 Test1
Test3
Test4

FileReader:


Test2 Test1
Test3
Test4

lignes() impression



Test1 Test2

Test3

Test4

Répondre

4

Utilisez trim() sur chaque ligne, il va supprimer les espaces superflus.

+0

Merci beaucoup! –

+0

De rien! – Cyclone

2

La classe System.IO.File dispose d'une méthode ReadAllLines qui vous restituera un tableau de chaînes, un par ligne.

Si cette méthode ne fonctionne pas, j'examinerais exactement quels octets vous causent des problèmes. Dans la fenêtre de surveillance, vous pouvez faire un System.Text.Encoding.ASCII.GetBytes (sampleLine) et examiner exactement avec quoi vous travaillez.

Je suppose que vous utilisez le codage ASCII, sinon, vous aurez besoin d'échanger ASCII avec l'option correcte, puis modifier votre fichier en lecture en fonction de cet encodage, aussi bien.

1

Comme mentionné précédemment, utilisez la méthode Readalllines pour la scinder automatiquement. Le problème que vous avez est les fichiers PC ASCII sont généralement divisés avec un retour de chariot et une nouvelle ligne, la scission sur un seul quittera l'autre. Vous pouvez diviser et couper comme mentionné ou utiliser l'autre division qui se divise sur les chaînes au lieu de caractères.

dim s() comme chaîne = de Split (FileReader, vbCrLf)

Trim supprimer les espaces à partir des données et, en fonction de votre situation qui pourrait être un problème pour vous.

0

A récemment rencontré un problème similaire. Le Trim() ne fonctionne pas parce que les lignes supplémentaires sont déjà là après avoir fait le split (ou en utilisant File.ReadAllLines). Voici ce qui a fonctionné pour moi:

Dim allText As String = System.IO.File.ReadAllText(filePath) 
    allText = allText.Replace(Chr(13), "") 
    Dim lines As String() = allText.Split(vbLf) 

Chr (13) est le caractère Control-M qui se traduisent par des lignes supplémentaires à l'aide de Split() ou File.ReadAllLines.

Questions connexes