2016-07-11 3 views
1

私は行と特殊文字でテキストファイルを持っています。私はそれらを交換したい。これを行うにはこれが最善の方法ですか?私はこれが最速の方法ではないと感じている。テキストファイルに特殊文字を置き換えます。これを行う最善の方法は?

Dim lOpenFile As Long 
Dim sFileText As String 
Dim sFileName As String 

sFileName = "C:\test.txt" 


lOpenFile = FreeFile 
Open sFileName For Input As lOpenFile 
sFileText = Input(LOF(lOpenFile), lOpenFile) 
Close lOpenFile 

sFileText = Replace(sFileText, " Ç ", " C ") 
sFileText = Replace(sFileText, " ü ", " u ") 
sFileText = Replace(sFileText, " é ", " e ") 


lOpenFile = FreeFile 
Open sFileName For Output As lOpenFile 
Print #lOpenFile, sFileText 
Close lOpenFile 

また、変更されたことをまとめたいと思います。誰かが私を助けることができる?

+0

これは本当にVB.NETまたはVB6ですか? –

+0

私はVB.NETでそれを行う方法を教えてもいいですが、@ TimSchmelterによると、これはVBScript/VB6のようです。 –

+0

この時点で私はVB6を使用していますが、.NETで作業しています。それほど長くはない。 .NETで私を助けることができれば、私をとても幸せにするでしょう。 – Jack

答えて

3

あなたが実際に望むのは、アクセントやウムラウトなどの文字列からすべてdiacreticsを削除することです。 [あなたのコードファイルの先頭にImports System.Textを追加することを忘れないでください]

Public Shared Function RemoveDiacritics(s As String) As String 
    Dim normalizedString As String = s.Normalize(NormalizationForm.FormD) 
    Dim stringBuilder As New StringBuilder() 

    For Each c As Char In normalizedString 
     If CharUnicodeInfo.GetUnicodeCategory(c) <> UnicodeCategory.NonSpacingMark Then 
      stringBuilder.Append(c) 
     End If 
    Next 

    Return stringBuilder.ToString() 
End Function 

しかし、それはüuに変換しますのでご注意:次に、あなたはそれがStringBuilderを使用していますので、また、効率的である。この方法を使用することができます(必要に応じて)正しいものではありません。通常は、ドイツ語のウムラウトを次のように「翻訳」する必要があります。ü = ue,= ae,= oeRelated

上記のメソッドf.eを呼び出します。この方法で:

Dim text As String = File.ReadAllText(sFileName) 
Dim newText As String = RemoveDiacritics(text) 
File.WriteAllText(sFileName, newText) 
+0

あなたの時間を取って、私の質問に答えるためのおかげでティム!それはほとんど動作します。特殊文字はこのアイコンで置き換えられました。 理由は何ですか? – Jack

+0

@Jack:申し訳ありませんが、まだアイデアはありません。このループは、スペースを含まない文字を追加するだけです(スペースを特別な文字として識別する)。だから、文字を省略するだけです。エンコードを指定できるオーバーロードを試してください。オリジナルのエンコーディングを使用する必要があります。これを試してください: 'File.WriteAllText(sFileName、newText、Encoding.Unicode); ' –

+0

作品greatt!ありがとうTim! – Jack

関連する問題