【问题标题】:How do I split content of a string array in C#? [closed]如何在 C# 中拆分字符串数组的内容? [关闭]
【发布时间】:2021-04-06 14:21:11
【问题描述】:

我有以下字符串数组:

string[] match = { "9582.jpg+0003_2.wav", "9500.jpg+0001_2.wav", "9400.jpg+0103_2.wav"};

上面的字符串数组是图像文件和声音文件的唯一组合。我用'+'分隔这两个文件(不是强制性的)。

我想将数组的内容分开并将其分配给两个变量。例如:

image0 = "9582.jpg";
sound0 = "0003_2.wav";

image1 = "9500.jpg";
sound1 = "0001_2.wav";

image2 = "9400.jpg";
sound2 = "0103_2.wav";

我该怎么做?

【问题讨论】:

  • 你搜索过如何在 C# 中拆分字符串吗?你找到了什么?你知道如何循环一个 IEnumerable 吗?
  • 你可以使用 Linq,比如match.Select(x => x.Split('+')
  • 循环遍历数组。并在每个上执行file.Split('+')
  • 我投票结束这个问题,因为它在 OP 方面没有显示最小搜索
  • 如果你有单独的文件名开头,不要像这样组合它们。请改用元组或记录。或二维数组

标签: c# arrays string


【解决方案1】:

假设你总是有这种格式的字符串,你可以利用 LINQ 的 SelectManySelect 和索引器来分割字符串:

string[] match = { "9582.jpg+0003_2.wav", "9500.jpg+0001_2.wav", "9400.jpg+0103_2.wav"};
var files = match
    .SelectMany(s => s.Split("+").Select((s, i) => (i, s))) // split string and turn result in value tuple containing "file type" and file name
    .GroupBy(t => t.i) // group by "type"
    .ToDictionary(g => g.Key, g => g.Select(t => t.s).ToArray());
var images = files[0];
var sounds = files[1];

【讨论】:

  • 一般来说,您不应该回答只是要求您为他们编写代码的问题。这促进了 Stack Overflow 是一种代码编写服务的观点。
  • @Guru Stron,感谢您的代码。拆分命令在我的情况下完成了这项工作。
  • @SONI 很高兴为您提供帮助!如果答案对您有用,请将其标记为已接受(答案左侧的勾勒勾号)。或者来自 Glubus 的那个。
【解决方案2】:

您可以使用 LINQ 使用简单的.Select 轻松完成!

var result = match.Select(item => item.Split('+')).ToArray();

【讨论】:

  • 对于这样一个小错误,我不赞成,但我可以看到您已经使用字符串进行了拆分。那不编译。 (在 NET Framework 中,而它在 Core 中工作)
  • 一般来说,您不应该回答只是要求您为他们编写代码的问题。这促进了 Stack Overflow 是一种代码编写服务的观点。
  • @Steve Splitting 使用字符串在我的机器上编译得很好,我确实检查了它,因为我很久没有这样做了。
  • @mason 它在 SO 内部规则中的任何地方都这么说吗?这个问题非常简单,但我们都必须从某个地方开始,我不介意帮助初学者。我通常会避免回答需要我编写整个函数的问题,但这只是一行。
  • 如果您说这是理想情况,我同意您的看法。但是我确实相信 OP 通过在这里第一次接触 LINQ 学到了一些东西。 > 这是一个惯例和一般做法,这不是我的一般做法或惯例。如果 SO 鼓励我在某个地方按照你所说的那样行事,那我就可以了。例如。他们的“如何提问”页面鼓励人们提出好的问题。有没有类似的问题需要回答?如果不是,那么我猜你和我只是在这个问题上不同意,这不值得在我的书中投反对票。
猜你喜欢
  • 1970-01-01
  • 2016-05-21
  • 2020-09-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-31
相关资源
最近更新 更多