Mat*_*ias 0 c# regex string split
我想将以下字符串拆分为三个元素:
first, middle, middle, middle, middle, last
Run Code Online (Sandbox Code Playgroud)
结果将是:
splits[0] = "first"
splits[1] = "middle, middle, middle, middle"
splits[2] = "last"
Run Code Online (Sandbox Code Playgroud)
我不知道这是否最好用正则表达式或字符串方法完成.
var s = "first, middle, middle, middle, middle, last";
var singleItems = s.Split(',').Select(x => x.Trim());
var splits = new []
{
singleItems.Take(1).Single(),
singleItems.Skip(1).Take(singleItems.Count() - 2)
.Aggregate("", (s1, s2) => s1 + s2 + ", ")
.Trim(' ', ','),
singleItems.Skip(singleItems.Count() - 1).Single()
};
Run Code Online (Sandbox Code Playgroud)
另一种方法是:
var firstIndex = s.IndexOf(',');
var lastIndex = s.LastIndexOf(',');
var splits = new []
{
s.Substring(0, firstIndex),
s.Substring(firstIndex + 2, lastIndex - (firstIndex + 2)),
s.Substring(lastIndex + 2)
};
Run Code Online (Sandbox Code Playgroud)
我认为第二种解决方案更清洁,更容易理解.但它的缺点是第一个和最后一个逗号必须后跟一个空格.第一个版本不存在此要求.
| 归档时间: |
|
| 查看次数: |
1024 次 |
| 最近记录: |