我试图删除字符串中的最后 5 个字符,但出现错误
string a = "192.168.0.225:5010";
int b = a.Length;
string c = a.Substring(b, 5);
MessageBox.Show(c.ToString());
Run Code Online (Sandbox Code Playgroud)
错误:附加信息:索引和长度必须引用字符串中的某个位置。
你的问题是认识的误区和使用参数的 Substring
第一个参数
此实例中子字符串的从零开始的起始字符位置。
第二个参数是
子字符串中的字符数。
您需要提供Length字符串的 ,减去需要删除的大小
string a = "192.168.0.225:5010";
var result = a.Substring(0, a.length - 5);
// or
var result = a.Substring(a.length - 5);
Run Code Online (Sandbox Code Playgroud)
注意:如果端口大小不同或不可用,这是一条通往失败城镇的单向街道
另一种稍微更强大的方法是Split通过端口分隔符
将字符串拆分为基于分隔符数组中的字符的子字符串。
var result = a?.Split(':')[0]
Run Code Online (Sandbox Code Playgroud)
注意:即使没有提供端口,这也能工作,并在空字符串上返回 null,如果没有提供端口,则返回字符串
或者,如果您使用的是 .Net Core 3+,则可以利用IPEndPoint.Parsethen 调用Address
将表示为字符串的 IP 网络端点(地址和端口)转换为 IPEndPoint 实例。
var result = IPEndPoint.Parse(a).Address
Run Code Online (Sandbox Code Playgroud)
注意:要添加更多容错,您可以使用该IPEndPoint.TryParse方法