首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

C# 过滤字符串中的非手机号码,效率高点的,该如何解决

2012-06-14 
C# 过滤字符串中的非手机号码,效率高点的例如: string content 13440900984\r\n13440900984\r\n你好\r\

C# 过滤字符串中的非手机号码,效率高点的
例如: string content = "13440900984\r\n13440900984\r\n你好\r\n13440900984\r\n你好\r\n13440900984\r\n13440900984\r\n13440900984\r\n13440900984\r\n13440900984\r\n13440900984你好\r\n鸟\r\n13440900984\r\n13440900984\r\n";


有时候字符串可能会比较长,所以求效率比较好的。。
要求过滤之后:
string content = "13440900984\r\n13440900984\r\n13440900984\r\n13440900984\r\n13440900984\r\n13440900984\r\n13440900984\r\n13440900984\r\n13440900984\r\n13440900984\r\n13440900984\r\n";

[解决办法]
用正则吧

C# code
string content = "13440900984\r\n13440900984\r\n你好\r\n13440900984\r\n你好\r\n13440900984\r\n13440900984\r\n13440900984\r\n13440900984\r\n13440900984\r\n13440900984你好\r\n鸟\r\n13440900984\r\n13440900984\r\n";StringBuilder sb=new StringBuilder();Regex.Matchex(content,@"1[\d]{10}").OfType<Match>().Select(x=>x.Value).ToList().ForEach(x=>sb.Append(x+"\r\n"));
[解决办法]
这样试试
C# code
  string content = @"13440900984\r\n13440900984\r\n你好\r\n13440900984\r\n你好\r\n13440900984\r\n13440900984\r\n13440900984\r\n13440900984\r\n13440900984\r\n13440900984你好\r\n鸟\r\n13440900984\r\n13440900984\r\n";            StringBuilder sb = new StringBuilder();            MatchCollection mc = Regex.Matches(content, @"(13([0-9])|15([0-9])|18([0-9]))\d{8}");            foreach (Match m in mc)            {                sb.Append(m.Value + "\r\n");            }
[解决办法]
两种方法

C# code
//一种是直接替换不必要的字符string content = "1344090098114\r\n13440900985\r\n你好\r\n13440900984\r\n你好\r\n13440900984\r\n13440900984\r\n13440900984\r\n13440900984\r\n13440900984\r\n13440900984你好\r\n鸟\r\n13440900984\r\n13440900984\r\n";Regex reg = new Regex(@"[^\r\n0-9]|[0-9]{12,}|(?<![0-9])[0-9]{1,10}(?![0-9])|(?!1[358][0-9]{9})[0-9]{11}");string result = reg.Replace(content, "");
[解决办法]
string content = "13440900984\r\n13440900984\r\n你好\r\n13440900984\r\n你好\r\n13440900984\r\n13440900984\r\n13440900984\r\n13440900984\r\n13440900984\r\n13440900984你好\r\n鸟\r\n13440900984\r\n13440900984\r\n";
var query = content.Split(new string[] { "\r\n" }).AsParallel().Where(x => Regex.IsMatch(x, "1(3|5|8)\d{9}"));

使用PLinq,如果你有一个16核心的Intel CPU,那么大约可以提高1个数量级(10倍)速度。

热点排行