当前位置:  开发笔记 > 编程语言 > 正文

如何将多字符串转换为C#字符串集合?

如何解决《如何将多字符串转换为C#字符串集合?》经验,为你挑选了1个好方法。

多字符串(双空格终止的空字符串字符串)在Windows API中很常见.将从API返回的多字符串转换为C#字符串集合的好方法是什么,反之亦然?

我对正确处理字符编码特别感兴趣(稍后是Windows XP).

以下方法似乎可以创建多字符串,但我没有解码多字符串的示例.

static string StringArrayToMultiString(
    ICollection stringArray
    )
{
    StringBuilder multiString = new StringBuilder();


    if (stringArray != null)
    {
        foreach (string s in stringArray)
        {
            multiString.Append(s);
            multiString.Append('\0');
        }
    }

    return multiString.ToString();
}

Marc Gravell.. 8

这可能是天真的,但如何:

static string[] MultiStringToArray(string multiString)
{
    return multiString.TrimEnd('\0').Split('\0');
}

另外 - 你不是错过了决赛\0(你说的是双空终止)StringArrayToMultiString吗?如果数组是一个params string[]数组,可能更容易调用- 类似于:

    static string StringArrayToMultiString(params string[] values)
{
    if (values == null) throw new ArgumentNullException("values");
    StringBuilder multiString = new StringBuilder();

    foreach (string s in values)
    {
        multiString.Append(s);
        multiString.Append('\0');
    }
    return multiString.ToString();
}

[关于最终\ 0的澄清后编辑]



1> Marc Gravell..:

这可能是天真的,但如何:

static string[] MultiStringToArray(string multiString)
{
    return multiString.TrimEnd('\0').Split('\0');
}

另外 - 你不是错过了决赛\0(你说的是双空终止)StringArrayToMultiString吗?如果数组是一个params string[]数组,可能更容易调用- 类似于:

    static string StringArrayToMultiString(params string[] values)
{
    if (values == null) throw new ArgumentNullException("values");
    StringBuilder multiString = new StringBuilder();

    foreach (string s in values)
    {
        multiString.Append(s);
        multiString.Append('\0');
    }
    return multiString.ToString();
}

[关于最终\ 0的澄清后编辑]


使用`multiString.Split('\ 0',StringSplitOptions.RemoveEmptyEntries)`可以省略TrimEnd,因为空字符串不能存储在双空终止列表中.
推荐阅读
勤奋的瞌睡猪_715
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有