其实这个并不太适合用正则来做,最近忙,就只给出正则实现方法吧 string test = "1,1,2,3,3,3"; List<int> list = new List<int>(); MatchCollection mc = Regex.Matches(test, @"(\d+)(,\1)*"); foreach (Match m in mc) { list.Add(m.Value.Length - m.Value.Replace(",", "").Length + 1); }int[] result = list.ToArray();
public void GetNumberArrayFromString() { string[] resultString = Regex.Split("1,1,1,2,2", ",", RegexOptions.None); int[] numberArray = new int[resultString.Length]; int i = 0; foreach (string numberstring in resultString) { numberArray[i] = Convert.ToInt32(numberstring); i++; } }//得到整型数组{1,1,1,2,2}再循环进行相同累计就行了
List<int> list = new List<int>()无效我用的是.net1.1,不是2.0
那就用ArrayList,不过转数组就要自己来转了,没有现成的方法string test = "1,1,2,3,3,3"; ArrayList list = new ArrayList(); MatchCollection mc = Regex.Matches(test, @"(\d+)(,\1)*"); foreach (Match m in mc) { list.Add(m.Value.Length - m.Value.Replace(",", "").Length + 1); }
string test = "1,1,2,3,3,3";
List<int> list = new List<int>();
MatchCollection mc = Regex.Matches(test, @"(\d+)(,\1)*");
foreach (Match m in mc)
{
list.Add(m.Value.Length - m.Value.Replace(",", "").Length + 1);
}int[] result = list.ToArray();
{
string[] resultString = Regex.Split("1,1,1,2,2", ",", RegexOptions.None);
int[] numberArray = new int[resultString.Length];
int i = 0;
foreach (string numberstring in resultString)
{
numberArray[i] = Convert.ToInt32(numberstring);
i++;
}
}//得到整型数组{1,1,1,2,2}再循环进行相同累计就行了
ArrayList list = new ArrayList();
MatchCollection mc = Regex.Matches(test, @"(\d+)(,\1)*");
foreach (Match m in mc)
{
list.Add(m.Value.Length - m.Value.Replace(",", "").Length + 1);
}
string[] ss = str.Split(',');
int cont = 1;
ArrayList arr = new ArrayList();
for(int i=0;i<ss.Length;i++)
{
try
{
if(ss[i]==ss[i+1]) cont ++;
else{ arr.Add(cont);cont=1; }
}
catch{ arr.Add(cont); }
}