问题描述
梅2992兰3000禾2299如上,如何获取如“兰”右边的第一组数据,格式不是固定的,字数也不是固定的。用正则,C#,能实现都可。
解决方案
解决方案二:
Regexrgx=newRegex(@"(?<=兰)d+");stringinputstr="梅2992兰3000禾2299";stringoutput="Result:<br/>";foreach(Matchminrgx.Matches(inputstr)){output+=m.Value+"<br/>";}Response.Write(output);
解决方案三:
要是提取所有汉字右边的数字,可以这样@"(?<=梅)d+|(?<=兰)d+|(?<=禾)d+"
解决方案四:
“兰”右边的第一组,何为第一组?汉字加数字?
解决方案五:
stringtext="梅2992兰3000禾2299";stringstr="兰";intstartIndex=0;for(inti=0;i<text.Length;i++){//用ASCII码判断if((int)text[i]>127){if((int)text[i]==(int)str[0]){Console.WriteLine(text.Substring(startIndex+1,i-startIndex-1));}else{startIndex=i;}}}Console.Read();
方法有点笨,没有像楼上那些智能。
解决方案六:
引用4楼u014022118的回复:
stringtext="梅2992兰3000禾2299";stringstr="兰";intstartIndex=0;for(inti=0;i<text.Length;i++){//用ASCII码判断if((int)text[i]>127){if((int)text[i]==(int)str[0]){Console.WriteLine(text.Substring(startIndex+1,i-startIndex-1));}else{startIndex=i;}}}Console.Read();方法有点笨,没有像楼上那些智能。
看错!!取的左边的不好意思,再补一个stringtext="梅2992兰3000禾2299";stringstr="兰";boolisStarted=false;intstartIndex=0;for(inti=0;i<text.Length;i++){//用ASCII码判断if((int)text[i]>127){if((int)text[i]==(int)str[0]){startIndex=i+1;isStarted=true;}else{if(isStarted){Console.WriteLine(text.Substring(startIndex,i-startIndex));}}}}Console.Read();
解决方案七:
上面代码忘记Break了if(isStarted){Console.WriteLine(text.Substring(startIndex,i-startIndex));break;}
解决方案八:
引用1楼From_TaiWan的回复:
Regexrgx=newRegex(@"(?<=兰)d+");stringinputstr="梅2992兰3000禾2299";stringoutput="Result:<br/>";foreach(Matchminrgx.Matches(inputstr)){output+=m.Value+"<br/>";}Response.Write(output);
感谢回复,我不是取所有汉字右边的第一组数字,而是需要指定的,比如取兰后面的3000,其它不要。
解决方案九:
引用3楼BitCoffee的回复:
“兰”右边的第一组,何为第一组?汉字加数字?
意思是取兰字右边第一组数据3000。
解决方案十:
引用1楼From_TaiWan的回复:
Regexrgx=newRegex(@"(?<=兰)d+");stringinputstr="梅2992兰3000禾2299";stringoutput="Result:<br/>";foreach(Matchminrgx.Matches(inputstr)){output+=m.Value+"<br/>";}Response.Write(output);
感谢,刚看明白。