0

编写一个简单的程序以从一个大的纯文本文件中提取所有邮政地址,但由于某些地址使用非标准字符而存在问题。

这是我需要处理的文件中的一些源文本:

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

但它需要阅读:

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

现在显然我可以为这个字符做一个简单的替换,但我需要它来处理每个字符。

BA 是 utf32 中 º 符号的十六进制值(尽管前面有一个零负载)所以如果我可以编写一些代码来查找字符串中的所有这些“=xx”实例并将它们替换为可以解决的正确 utf 字符它。但对于我的生活,我无法弄清楚如何。

任何人都可以帮忙吗?

谢谢

4

2 回答 2

1

利用

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

使用适当的更改单词编码。

于 2014-09-21T14:22:14.497 回答
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 转换为整数,然后转换为 Unicode 代码点。

于 2014-09-21T16:13:26.863 回答