c# - 如何在第 n 次出现时拆分字符串?

标签 c#

我想做的是在第 n 次出现字符串时拆分(在本例中为“\t”)。这是我目前正在使用的代码,它会在每次出现“\t”时拆分。

string[] items = input.Split(new char[] {'\t'}, StringSplitOptions.RemoveEmptyEntries);

如果输入 = "one\ttwo\tthree\tfour",我的代码返回数组:

  • 一个
  • 两个
  • 三个
  • 四个

但是假设我想在第二个“\t”之后的每个“\t”上拆分它。所以,它应该返回:

  • 一二
  • 三个
  • 四个

最佳答案

没有内置任何东西。

您可以使用现有的Split,使用TakeSkip 以及string.Join 来重建零件你原来拥有的。

string[] items = input.Split(new char[] {'\t'}, 
                             StringSplitOptions.RemoveEmptyEntries);
string firstPart = string.Join("\t", items.Take(nthOccurrence));
string secondPart = string.Join("\t", items.Skip(nthOccurrence))

string[] everythingSplitAfterNthOccurence = items.Skip(nthOccurrence).ToArray();

另一种方法是遍历字符串中的所有字符,找到第 n 次出现的索引和它前后的子字符串(或者找到第 n 次之后的下一个索引,子字符串等等......等等......等等……)。

关于c# - 如何在第 n 次出现时拆分字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16034792/

相关文章:

c# - 如何添加 "Content-Type = application/json;v=2.0",包括使用 HttpClient 进行版本控制?

c# - 如何将服务总线消息 SystemProperties.LockToken 反序列化到自己的类 C# 中?

c# - 如何在 LINQ 中连接表并在 MVC 中返回列表

c# - 以编程方式隐藏 PropertyGrid 中的属性

c# - 如果我访问该对象属性,类属性是否会自动初始化?

c# - 创建表,其中表名是变量

c# - log4net配置问题

c# - 如何在 TreeView 中获取子位置?

c# - 使用LIKE运算符:适用于SQL Server,但不适用于SQLite

c# - WINFORM控件问题( slider 在哪里?)