如何使用C#的String.Split方法拆分IP地址并存储到变量做有效性校验
C# 基于String.Split实现IP地址拆分与合法性校验
现有代码问题说明
你当前代码中Split方法传入的count=1参数代表最多只返回1个拆分结果,会导致IP字符串完全不会被切分,无法得到4段IP值,不符合需求。
实现步骤
1. 正确使用Split方法拆分IP地址
调整Split参数,拆分出IP的所有段:
string ip = "198.170.60.90"; // 定义分隔符为英文句号 char[] separator = { '.' }; // 拆分时自动移除空段,不限制拆分数量 string[] ipSegments = ip.Split(separator, StringSplitOptions.RemoveEmptyEntries);
2. 拆分结果存入独立变量
先判断拆分后的段数是否符合IPv4的4段要求,再按索引赋值给独立变量:
// 段数不合法直接判定IP无效 if(ipSegments.Length != 4) { Console.WriteLine("IP格式错误:段数不符合IPv4要求"); return; } // 存入独立变量 string seg1 = ipSegments[0]; string seg2 = ipSegments[1]; string seg3 = ipSegments[2]; string seg4 = ipSegments[3];
3. IP段合法性校验
每段IP需要符合以下规则:
- 段长度必须在1~3之间
- 段内所有字符只能是0-9的数字
- 若段长度大于1,不能以0开头(避免出现
192.168.01.1这类不规范写法) - 转换为整数后数值范围必须在0~255之间
完整校验示例代码:
bool IsIPv4Valid(string ip) { char[] separator = { '.' }; string[] ipSegments = ip.Split(separator, StringSplitOptions.RemoveEmptyEntries); // 校验段数 if (ipSegments.Length != 4) return false; foreach (string seg in ipSegments) { // 校验长度 if (seg.Length is 0 or > 3) return false; // 校验全为数字 foreach (char c in seg) { if (!char.IsDigit(c)) return false; } // 校验前导零 if (seg.Length > 1 && seg.StartsWith('0')) return false; // 校验数值范围 int segValue = int.Parse(seg); if (segValue is < 0 or > 255) return false; } return true; }
补充说明
如果只是实际项目中需要校验IP有效性,不需要学习Split用法,也可以直接使用.NET内置的IPAddress.TryParse方法完成校验。
内容的提问来源于stack exchange,提问作者Razvan Razvi
相关产品推荐
相关产品推荐

