如何删除字符串中的最后 5 个字符?

-1 c# string substring

我试图删除字符串中的最后 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)

错误:附加信息:索引和长度必须引用字符串中的某个位置。

AAA*_*ddd 7

你的问题是认识的误区和使用参数的 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方法