我逐行读取文件,我想将一些值转换为整数.其中一行文件是92.44.12.5/28,我想将5转换为整数.我能够转换到12但它没有转换为5.
string[] ip1 = line.Split('.');
int [] ipArray = Array.ConvertAll(ip1[2].Split(),Int32.Parse);
Run Code Online (Sandbox Code Playgroud)
我的代码出了什么问题?
您可以使用LINQ + int.Parse:
int[] ipArray = lines
.Select(l => int.Parse(l.Split('/')[0].Split('.').Last()));
.ToArray();
Run Code Online (Sandbox Code Playgroud)
这假设格式是严格的,否则你得到一个例外int.Parse.
这是一个更安全的版本:
int ip = 0;
int[] ipArray = lines
.Where(l => l.Contains('/') && l.Contains('.'))
.Select(l => l.Trim().Split('/')[0].Split('.').Last())
.Where(i => int.TryParse(i, out ip))
.Select(i => ip)
.ToArray();
Run Code Online (Sandbox Code Playgroud)
如果你想找到所有IP的所有4个数字,那么每一行都有一个数组:
int[][] allIPs = lines
.Where(l => l.Contains('/') && l.Contains('.'))
.Select(l => l.Trim().Split('/')[0].Split('.'))
.Where(split => split.Length == 4 && split.All(str => str.All(Char.IsDigit)))
.Select(split => Array.ConvertAll(split, int.Parse))
.ToArray();
Run Code Online (Sandbox Code Playgroud)
请注意,这不兼容IPv6;)
| 归档时间: |
|
| 查看次数: |
189 次 |
| 最近记录: |