我希望在'0'
和'1'
上拆分,同时将这些字符保留在拆分结果中。我怎么能在C#中做到这一点?
e.g。
"012345" => 0,1,2345
我试过
Regex.Split(number, @"(?=[01])");
但我得到"", 0, 12345
作为结果
除了分割之间的""
之外,以下似乎有效。
Regex.Split(number, @"(0|1)");
答案 0 :(得分:1)
您可以使用LINQ简单地使用您在帖子中提到的正则表达式模式排除空元素:
var results = Regex.Split(number, @"(0|1)")
.Where(p => !String.IsNullOrEmpty(p));
这也可以。我希望看到更优雅的方法,我觉得这是你正在寻求的,但它完成了工作。
List<string> results = new List<string>();
int curInd = 0;
var matchInfo = Regex.Matches(number, "(0|1)");
foreach (Match m in matchInfo)
{
//Currently at the start of a match, add the match sequence to the result list.
if (curInd == m.Index)
{
results.Add(number.Substring(m.Index, m.Length));
curInd += m.Length;
}
else //add the substring up to the match point and then add the match itself
{
results.Add(number.Substring(curInd, m.Index - curInd));
results.Add(number.Substring(m.Index, m.Length));
curInd = m.Index + m.Length;
}
}
//add any remaining text after the last match
if (curInd < number.Length)
{
results.Add(number.Substring(curInd));
}