【问题标题】:Making sure each element in string array has only one space either side C#确保字符串数组中的每个元素在 C# 两侧只有一个空格
【发布时间】:2012-03-31 09:39:22
【问题描述】:

我已经拆分了字符串(它是 Victoria Adelaide Mary/Wettin/",但现在我已经拆分了它,我需要确保数组中每个元素的两侧只有一个空格。

                detail = "Victoria Adelaide Mary/Wettin/";
                name = "";
                string[] detailArray = detail.Split('/');

                foreach (string s in detailArray)
                {
                    name += s;
                }

例如“Wettin”这个词两边都没有空格。你会建议我做什么?

谢谢你:)

ps。输入->“Wettin”(这是数组的元素之一 输出 -> “Wettin”

完整

  • “Victoria”变为“Victoria”(因为它是 数组)
  • “阿德莱德”变成“阿德莱德”
  • “玛丽”变成“玛丽”
  • “Wettin”变成“Wettin”(因为它是数组的最后一个元素

我需要在数组的第一个元素的末尾有一个空格,在数组的最后一个元素的开头有一个空格,并确保中间的每个单词之间只有一个空格

【问题讨论】:

  • 真的不清楚你想要达到什么目的。请发布一些输入和所需输出的示例。

标签: c# split arrays


【解决方案1】:

要将所有名称放入数组中的单独项目中,您可以使用:

string[] detailArray = detail.Replace('/', ' ').Split(' ');

将它放在name 变量中:

        string detail = "Victoria Adelaide Mary/Wettin/";
        string name = "";

        string[] detailArray = detail.Replace('/', ' ').Split(' ');

        foreach (string s in detailArray)
        {
            name += s + " ";
        }
        // trim last space character
        name = name.TrimEnd(' ');

【讨论】:

  • 当字符串在运行时未知时,使用连接(+ 符号)构建字符串效率不高。此外,第一个代码块中的 Replace/Split 组合是多余的,您也可以使用带有正斜杠的单个拆分。
  • 我知道。但是对于名称,我认为这很好,因为只有很少的项目。对我来说,使用 StringBuilder 似乎是个沉重的机器。
  • 关注的不是进行字符串连接所需的时间,而是它对内存的影响(垃圾收集更频繁)
【解决方案2】:
var name = string.Format(" {0} ", string.Join(" ", detail.Split('/')));

http://msdn.microsoft.com/en-us/library/57a79xd0.aspx - String.Join

(在问题结束后添加以下内容,因为我认为它更有效率)

string name = string.Format(" {0} ", string.Replace('/', ' '));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-14
    • 2012-05-19
    • 1970-01-01
    • 1970-01-01
    • 2020-05-18
    • 1970-01-01
    • 2021-11-13
    相关资源
    最近更新 更多