【问题标题】:Split a already splitted string拆分已经拆分的字符串
【发布时间】:2021-04-18 12:32:38
【问题描述】:

我有一个格式为:“xx,xx,xx|xx,xx,xx|xx,xx,xx”的字符串 我想得到每个 xx 部分,所以我从 string.split('|'); 开始 因为零件的数量不是固定数字,所以我想用 foreach 来做。 但是 foreach 中的Split(',') 不起作用,[iIget this error][1]

string[] lang = RechnungenString.Split('|');

foreach (string item in lang)
{
    string parts = item.Split(',');
}

我怎样才能做我想做的事? 谢谢! [1]:https://i.stack.imgur.com/EtXoH.png

【问题讨论】:

  • Split 返回string[],因此您的parts 变量必须属于该类型。但是,Split 有一个重载,允许您指定多个分隔符,因此您可以将第一行修改为此 string[] lang = RechnungenString.Split('|', ',');,并删除其余代码。然后lang 将包含您输入的所有 9 个xx 元素。
  • 我不能用'|'分割后的每一个字符串吗在 foreach 中?
  • 您需要另一个 foreach,split 将再次返回一个元素集合,在您的示例案例中为 3。 lang 将包含字符串 xx,xx,xx - xx,xx,xx - xx,xx,xx。然后在循环内部,parts,一旦变成一个字符串数组,每次迭代都会包含这 3 个元素:xx - xx - xx

标签: c# arrays string foreach


【解决方案1】:

您的问题的简单答案是,由于Split 返回一个字符串数组string[],正如您在代码示例的第一行中所看到的,您的parts 变量也必须是string[] 类型的避免该错误:

string[] lang = RechnungenString.Split('|');

foreach (string item in lang)
{
    string[] parts = item.Split(',');
    // process each triplet here
}

由于您的第一条语句说“我想获取每个 xx 部分”,如果这句话的意思是您只想将所有 xx 部分收集到一个字符串数组中,那么您可以大大简化您的代码。 Split 方法有一个重载,允许您指定多个分隔符,因此您的整个代码示例可能只是:

string[] lang = RechnungenString.Split('|', ',');

现在lang 将包含示例字符串中的所有9 个xx 元素。

【讨论】:

    【解决方案2】:
    string[] lang = RechnungenString.Split('|');
    
    foreach (string item in lang)
    {
        string[] parts = item.Split(',');
        foreach (string item2 in parts)
        {
            // do something with item2
        }
    }
    

    替代解决方案:

        foreach (string item in Regex.Split(RechnungenString,"[|]|,"))
        {
            Console.WriteLine(item);
        }
    

    这个需要:using System.Text.RegularExpressions

    【讨论】:

    • 还是不行,和上图一样的错误。
    • 我没有在string[] parts = ....中添加[]
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-13
    • 1970-01-01
    • 2010-10-28
    相关资源
    最近更新 更多