首页 > 解决方案 > 如何使用 Unicode 从字符串中拆分数据?

问题描述

早上好,我有一个问题。例如,我需要使用 Unicode 从字符串中恢复数据

"\u001f\u0001\u0013FERREIRA RAMOS MUZI\u001f\u0002\0\u001f\u0003\aRICARDO\u001f\u0004\u0003URY\u001f\u0005\b09031979\u001f\u0006\u000eMONTEVIDEO/URY\u001f\a\b34946682\u001f\ b\u0004\"\a \u0016\u001f\t\b22072026\u001f\n\0"

以字节为单位的字符串

1F011346455252454952412052414D4F53204D555A491F02001F03075249434152444F1F04035552591F050830393033313937391F060E4D4F4E5445564944454F2F5552591F070833343934363638321F0804220720161F090832323037323032361F0A00

例如,我需要在 ArrayList 或 Arraystring 中恢复 Name、LastName 等

字符串 [] 数组 = {“斯蒂芬”、“国王”、“11301958”、“纽约/美国”}

如果我使用我的问题

System.Text.Encoding.UTF8.GetString(ByteArray);

要获取数据,我只获取姓名和姓氏,没有日期或来自哪里。

我怎样才能从这个字符串中得到它?

标签: c#unicode-stringconverters

解决方案


您可能必须创建一个自定义解析器:

byte [] bytes = // Your data here....
// Parser
List<string> words = new List<string>();
for (var i = 0; i < bytes.Length; i++) {
    if (0x1F == bytes[i]) {
        int index = bytes[i+1]; // Ignoring this
        int len = bytes[i+2];
        // Convert bytes to string
        words.Add(System.Text.Encoding.UTF8.GetString(bytes, i+3, len));
        i += len + 2;
    }
}
Console.WriteLine(String.Join("\n", words.ToArray()));

输出:

费雷拉·拉莫斯·穆兹

里卡多
乌里
09031979
蒙得维的亚/乌里
34946682
" - 这里有一些不可打印的字符
22072026

看起来有些字段需要特殊解析。


推荐阅读