c#按数字拆分字符串值
字符串值c#按数字拆分字符串值,c#,string,split,C#,String,Split,字符串值 String value = "11100110100"; 我想按如下所示拆分它 111,00,11,0,1,00 我尝试根据数字进行拆分,如下所示: List<string> result1= value.Split('0').ToList<string>(); List<string> result2= value.Split('1').ToList<string>(); 谢谢。您可以在从0到1和从1到0的每次更改之间放置一个字
String value = "11100110100";
我想按如下所示拆分它
111,00,11,0,1,00
我尝试根据数字进行拆分,如下所示:
List<string> result1= value.Split('0').ToList<string>();
List<string> result2= value.Split('1').ToList<string>();
谢谢。您可以在从0到1和从1到0的每次更改之间放置一个字符,然后在此基础上拆分:
string[] result = value.Replace("10", "1,0").Replace("01", "0,1").Split(',');
这是我的扩展方法,没有替换纯解析
public static IEnumerable<string> Group(this string s)
{
if (s == null) throw new ArgumentNullException("s");
var index = 0;
while (index < s.Length)
{
var currentGroupChar = s[index];
int groupSize = 1;
while (index + 1 < s.Length && currentGroupChar == s[index + 1])
{
groupSize += 1;
index += 1;
}
index += 1;
yield return new string(currentGroupChar, groupSize);
}
}
公共静态IEnumerable组(此字符串为s)
{
如果(s==null)抛出新的ArgumentNullException(“s”);
var指数=0;
while(索引
注意:它适用于每个字符分组(不仅仅是0和1)这不是拆分的工作方式。需要自定义逻辑来选择字符串列表中分开的1和0。请参阅:好主意。您不需要使用
StringBuilder
来构建重复使用相同字符的字符串。只需计算字符数,然后使用新建字符串(lastchar,cnt)
创建一个要返回的字符串。@Guffa:捕捉得不错-这将节省一些内存和性能。改变了。+1为了简单起见,事实上答案隐藏在问题中。“我想把它拆分成111,00,11,0,1,00”,只是需要找到一种方法将逗号放在适当的位置。beautiful…@pwas:这当然不是最有效的方法,但适合于任务,因为所需的返回值不是表示结果的有效方法。更有效的方法是只返回一个包含每个字符串长度的数组,因为字符串的内容是已知的。
public static IEnumerable<string> Group(this string s)
{
if (s == null) throw new ArgumentNullException("s");
var index = 0;
while (index < s.Length)
{
var currentGroupChar = s[index];
int groupSize = 1;
while (index + 1 < s.Length && currentGroupChar == s[index + 1])
{
groupSize += 1;
index += 1;
}
index += 1;
yield return new string(currentGroupChar, groupSize);
}
}