0

大きなプレーンテキストファイルからすべての郵便住所を抽出する簡単なプログラムを作成すると、住所の一部に標準外の文字が使用されているという問題が発生します。

これは、処理する必要があるファイルのソース テキストです。

Rua Vale de Louro, N=BA 97 Bloco 2, 1=BA A

しかし、それは読む必要があります:

Rua Vale de Louro、Nº 97 Bloco 2、1º A

明らかに、この1文字を簡単に置き換えることができますが、すべての文字で動作させる必要があります.

BA は utf32 の º 記号の 16 進値です (ただし、その前にゼロの負荷があります)。したがって、文字列内のこれらすべての「=xx」インスタンスを見つけて、それらを解決する正しい utf 文字に置き換えるように何かをコーディングできればそれ。しかし、私の人生では、方法がわかりません。

誰でも助けてもらえますか?

ありがとう

4

2 に答える 2

1

正規表現と一致評価器を使用して、置換文字列を計算できます。

Dim input = "Rua Vale de Louro, N=BA 97 Bloco 2, 1=BA A"
Dim expected = "Rua Vale de Louro, Nº 97 Bloco 2, 1º A"

Dim regex = new Regex("=([0-9A-Fa-f]+)",RegexOptions.CultureInvariant, TimeSpan.FromSeconds(10))          
Dim evaluator = Function(match)  Char.ConvertFromUtf32(Convert.ToInt32(match.Groups(1).Value, 16))

Dim actual = regex.Replace(input, evaluator)

このパターンは、1 つ以上の 16 進数が続く = に一致します。16 進数はグループ 1 にあります。

エバリュエーターは 16 進数を受け取り、基数 16 から整数に変換してから、Unicode コードポイントに変換します。

于 2014-09-21T16:13:26.863 に答える
1

使用する

Dim txt As String = IO.File.ReadAllText("fileName", System.Text.Encoding.encoding) 'ASCII, UFT32, UFT8, Unicode etc...

単語のエンコーディングを適切なものに変更します。

于 2014-09-21T14:22:14.497 に答える