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

C#分割字符串的有关问题,求高手!

2012-11-06 
C#分割字符串的问题,急求高手!!HTML code0.0.0.00.255.255.255IANA保留地址CZ88.NET1.0.0.01.0.0.255澳大

C#分割字符串的问题,急求高手!!

HTML code
0.0.0.0         0.255.255.255   IANA保留地址  CZ88.NET1.0.0.0         1.0.0.255       澳大利亚  CZ88.NET1.0.1.0         1.1.0.255       亚太地区  CZ88.NET1.1.1.0         1.1.1.255       澳大利亚  CZ88.NET1.1.2.0         1.2.2.255       亚太地区  CZ88.NET1.2.3.0         1.2.3.255       澳大利亚  CZ88.NET1.2.4.0         1.3.255.255     亚太地区  CZ88.NET1.4.0.0         1.4.0.255       澳大利亚  CZ88.NET1.4.1.0         1.8.255.255     亚太地区  CZ88.NET1.9.0.0         1.9.255.255     马来西亚  CZ88.NET1.10.0.0        1.10.9.255      亚太地区  CZ88.NET1.10.10.0       1.10.10.255     澳大利亚  CZ88.NET1.10.11.0       1.10.255.255    亚太地区  CZ88.NET1.11.0.0        1.11.255.255    韩国  CZ88.NET1.12.0.0        1.15.255.255    北京市 北京北大方正宽带网络科技有限公司1.16.0.0        1.19.255.255    韩国  CZ88.NET1.20.0.0        1.20.255.255    亚太地区  CZ88.NET1.21.0.0        1.21.255.255    日本  CZ88.NET1.22.0.0        1.23.255.255    印度  CZ88.NET1.24.0.0        1.31.255.255    内蒙古 联通1.32.0.0        1.32.255.255    亚太地区  CZ88.NET1.33.0.0        1.33.255.255    日本  CZ88.NET1.34.0.0        1.35.255.255    台湾省  CZ88.NET1.36.0.0        1.36.255.255    香港 电讯盈科有限公司1.37.0.0        1.37.255.255    香港 特别行政区1.38.0.0        1.39.255.255    印度  CZ88.NET1.40.0.0        1.44.255.255    澳大利亚  CZ88.NET1.45.0.0        1.45.255.255    北京市 万网志成科技有限公司1.46.0.0        1.47.255.255    泰国  CZ88.NET1.48.0.0        1.49.255.255    贵州省 电信1.50.0.0        1.50.255.255    宁夏 电信1.51.0.0        1.51.255.255    山东省济南市 山东大学1.52.0.0        1.55.255.255    越南 河内1.56.0.0        1.56.255.255    黑龙江省 联通1.57.0.0        1.57.255.255    黑龙江省齐齐哈尔市 联通1.58.0.0        1.58.255.255    黑龙江省哈尔滨市 联通1.59.0.0        1.63.255.255    黑龙江省 联通1.64.0.0        1.65.255.255    香港 电讯盈科有限公司1.66.0.0        1.67.255.255    日本  CZ88.NET1.68.0.0        1.71.255.255    山西省 电信1.72.0.0        1.79.255.255    日本  CZ88.NET1.80.0.0        1.84.255.255    陕西省 电信1.85.0.0        1.85.0.45       陕西省西安市 电信1.85.0.46       1.85.0.46       陕西省西安市 临潼区海岸网络1.85.0.47       1.85.255.255    陕西省西安市 电信1.86.0.0        1.87.255.255    陕西省 电信1.88.0.0        1.91.255.255    北京市 歌华宽带1.92.0.0        1.93.255.255    北京市 电信通1.94.0.0        1.95.255.255    北京市 宽带通1.96.0.0        1.111.255.255   韩国  CZ88.NET1.112.0.0       1.115.255.255   日本  CZ88.NET1.116.0.0       1.119.255.255   中国 中电华通1.120.0.0       1.159.255.255   澳大利亚  CZ88.NET1.160.0.0       1.175.255.255   台湾省  CZ88.NET1.176.0.0       1.177.255.255   韩国  CZ88.NET1.178.0.0       1.179.127.255   澳大利亚  CZ88.NET1.179.128.0     1.179.255.255   亚太地区  CZ88.NET1.180.0.0       1.183.255.255   内蒙古 电信1.184.0.0       1.184.127.255   广东省广州市 暨南大学1.184.128.0     1.185.255.255   广东省广州市 教育网1.186.0.0       1.186.255.255   印度  CZ88.NET1.187.0.0       1.187.255.255   亚太地区  CZ88.NET1.188.0.0       1.191.255.255   黑龙江省 联通1.192.0.0       1.193.255.255   河南省 电信1.194.0.0       1.194.27.255    河南省平顶山市 电信1.194.28.0      1.194.28.255    河南省平顶山市 (新华区)电信1.194.29.0      1.194.255.255   河南省平顶山市 电信1.195.0.0       1.195.255.255   河南省三门峡市 电信1.196.0.0       1.196.255.255   河南省 电信1.197.0.0       1.197.196.255   河南省许昌市 电信1.197.197.0     1.197.197.255   河南省济源市 电信1.197.198.0     1.197.218.255   河南省许昌市 电信1.197.219.0     1.197.219.255   河南省安阳市 电信1.197.220.0     1.197.255.255   河南省许昌市 电信1.198.0.0       1.199.255.255   河南省 电信1.200.0.0       1.200.3.255     澳大利亚  CZ88.NET1.200.4.0       1.200.255.255   亚太地区  CZ88.NET1.201.0.0       1.201.255.255   韩国  CZ88.NET1.202.0.0       1.203.255.255   北京市 电信1.204.0.0       1.207.255.255   贵州省 电信1.208.0.0       1.255.255.255   韩国  CZ88.NET2.0.0.0         2.15.255.255    法国  CZ88.NET2.16.0.0        2.23.255.255    欧洲  CZ88.NET2.24.0.0        2.31.255.255    英国  CZ88.NET2.32.0.0        2.47.255.255    意大利  CZ88.NET2.48.0.0        2.51.255.255    阿联酋  CZ88.NET2.52.0.0        2.55.255.255    以色列  CZ88.NET2.56.0.0        2.59.255.255    乌克兰  CZ88.NET2.60.0.0        2.63.255.255    俄罗斯  CZ88.NET2.64.0.0        2.71.255.255    瑞典  CZ88.NET2.72.0.0        2.79.255.255    哈萨克斯坦  CZ88.NET2.80.0.0        2.83.255.255    葡萄牙  CZ88.NET2.84.0.0        2.87.255.255    希腊  CZ88.NET2.88.0.0        2.91.255.255    沙特阿拉伯  CZ88.NET2.92.0.0        2.95.255.255    俄罗斯  CZ88.NET2.96.0.0        2.103.255.255   英国  CZ88.NET2.104.0.0       2.111.255.255   丹麦  CZ88.NET2.112.0.0       2.119.255.255   意大利  CZ88.NET2.120.0.0       2.127.255.255   英国  CZ88.NET2.128.0.0       2.131.255.255   丹麦  CZ88.NET2.132.0.0       2.135.255.255   哈萨克斯坦  CZ88.NET2.136.0.0       2.143.255.255   西班牙  CZ88.NET2.144.0.0       2.147.255.255   伊朗  CZ88.NET2.148.0.0       2.151.255.255   挪威  CZ88.NET2.152.0.0       2.155.255.255   西班牙  CZ88.NET223.255.240.0   223.255.243.255 香港 特别行政区223.255.244.0   223.255.247.255 印度  CZ88.NET223.255.248.0   223.255.253.255 澳大利亚  CZ88.NET.......(共40多万条) 





上面的IP库是存在一个txt文件里面的,现在我用StreamReader把它一行一行的读出来,

但是如何将每行分解成三个字段呢? 分解成startIP, endIP 和后面的区域

上面的每行空隔空格数是不一样的,用split可以分割吗?


[解决办法]
用正则吧,下面的代码可以保证捕获到你想要的数据,但是应该还可以把正则写得更简单。。。
C# code
do            {                string str = sr.ReadLine();                Regex rgx = new Regex(@"(?<match1>\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})\s*(?<match2>\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})\s*(?<match3>.+)");                MatchCollection matchAry = rgx.Matches(str);                for (int i = 0; i < matchAry.Count; i++)                {                    Match mitem = matchAry[i];                    string mstr1 = mitem.Groups["match1"].Value;                    string mstr2 = mitem.Groups["match2"].Value;                    string mstr3 = mitem.Groups["match3"].Value;                }            } while (sr.Peek() >= 0); 

热点排行