日期:2014-05-20  浏览次数:21008 次

如何从一串字符串中提取数字
string s = "d$a#31#d$fc$r%22%f$e$r$43@e$65%g$g&d$z";

------解决方案--------------------
你是要怎么个提法?是仅仅把有的数字提出来不关注顺序?
如果这样的话,那下面的应该就能实现:
for(int i=0;i<10;i++)
{
int flag=s.indexOf(i);
if(flag!=-1)
Console.WriteLine(i);
else continue;
}
------解决方案--------------------
string s = "d$a#31#d$fc$r%22%f$e$r$43@e$65%g$g&d$z";
s=Regex.Replace(s,"\\D+","");
------解决方案--------------------
C# code

var sb=new StringBuilder();
foreach(char c in s)
{
if(c>='0'&&c<='9')
{
sb.Append(c);
}
}
return sb.ToString()

------解决方案--------------------
正则表达式!
------解决方案--------------------
string s = "d$a#31#d$fc$r%22%f$e$r$43@e$65%g$g&d$z";
string pattern = @"\d+";
 
MatchCollection matches = Regex.Matches(s, pattern,RegexOptions.Multiline); // Split on hyphens
foreach (Match match in matches)
{
Console.WriteLine("'{0}'", match);
Console.ReadLine();
}


这样的结果是:31 22 43 65

如果string pattern = @"\d";
则结果是3 1 2 2 4 3 6 5 

具体知识上面有提的,正则表达式