在C#中最后一次出现逗号时拆分字符串

问题描述

我说的是一个字符串

var str = "xy,yz,zx,ab,bc,cd";

我想在C#中最后一个出现逗号的地方将其拆分,即

a = "xy,ab"
b = "bc,cd"

如何获得此结果?

解决方法

让我们借助index找到所需的逗号LastIndexOf

  var str = "xy,yz,zx,ab,bc,cd";

  // index of the 2nd last occurrence of ','
  int index = str.LastIndexOf(',',str.LastIndexOf(',') - 1);

然后使用Substring

  string a = str.Substring(0,index);
  string b = str.Substring(index + 1); 

让我们看看:

  Console.WriteLine(a);
  Comsole.WriteLine(b);

结果:

  xy,ab
  bc,cd
,

“可读”的替代方法;)

<MyImportedComponent disabled={this.state.invalid} />
,

您可以通过正则表达式替换来解决此问题:

var str = "xy,cd";
var a = Regex.Replace(str,@",[^,]+,]+$","");
var b = Regex.Replace(str,@"^.*,([^,]+)$","$1");
Console.WriteLine(a);
Console.WriteLine(b);

此打印:

xy,ab
bc,cd
,

如果您从NuGet获得Microsoft的System.Interactive扩展,则可以执行以下操作:

string output = String.Join(",",str.Split(',').TakeLast(2));