代码之家  ›  专栏  ›  技术社区  ›  Arya

拆分逗号分隔多个字符串并推入数组值

c#
  •  -1
  • Arya  · 技术社区  · 6 年前

    如何拆分逗号分隔的多个字符串并推入数组。

    例如,

    string a = "TN,KA,KL";
    string b = "AP,UP,JK";
    

    结果数组应为:

    string[] resultArray = new string[] {"TN", "KA", "KL", "AP", "UP", "JK"};
    

    我是新来的。帮我解决这个问题。

    1 回复  |  直到 6 年前
        1
  •  10
  •   Caius Jard    6 年前

    如果要使用LINQ:

    var resultArray = a.Split(',').Concat(b.Split(',')).ToArray();
    

    或者不使用linq,可以将concat作为字符串,然后使用 在这三行中:

    var resultArray = $"{a},{b}".Split(','); //c#6+ String interpolation-formatted style
    var resultArray = string.Format("{0},{1}", a, b).Split(','); //c# any version, formatted style
    var resultArray = (a+","+b).Split(','); //concat style
    

    或者可以将它们加载到列表中,然后将其转换为数组:

    var l = new List<string>(a.Split(','));
    l.AddRange(b.Split(','));
    var resultArray = l.ToArray();
    

    这绝不是一个详尽的列表,但它详细说明了使用linq(如果有多种不同类型的可枚举性,则使用简单)、不使用linq(如果它实际上是一对短字符串,并且您希望有一个易于阅读的片段)、使用集合(如果您希望传递它并从不同的位置填充它)来执行此操作的最简单方法。

    如果这个场景真的像你在这里看到的那样,有几个短字符串,我会用字符串concat然后split。string类对“将3个字符串连接在一起”操作有特定的优化,因此它应该具有合理的性能、代码短和易于理解。如果要执行数百万次这样的操作,那么将a和b长度的数组拆分为两个数组可能会更快,生成与a和b长度的数组一样长的第三个数组,然后将a复制到start中,并在偏移量a处将b复制到in中。