C# 如何从c中的字符串中获取第二部分#
我有一个字符串数组,其中的值如下:C# 如何从c中的字符串中获取第二部分#,c#,string,C#,String,我有一个字符串数组,其中的值如下: strMystring[0] = "George,Michael - 1234"; 我想使用子字符串从字符串中获取数值。我正在尝试使用以下代码,但我得到了System.ArgumentOutOfRangeException strGSPN[0].Substring(strGSPN[0].IndexOf('-') + 1, strGSPN[0].Length) 如何获得该值 提前感谢。您的方法的问题是子字符串需要的是开始索引和长度,而不是结束索引: p
strMystring[0] = "George,Michael - 1234";
我想使用子字符串从字符串中获取数值。我正在尝试使用以下代码,但我得到了System.ArgumentOutOfRangeException
strGSPN[0].Substring(strGSPN[0].IndexOf('-') + 1, strGSPN[0].Length)
如何获得该值
提前感谢。您的方法的问题是
子字符串
需要的是开始索引和长度,而不是结束索引:
public string Substring (int startIndex, int length);
长度应为总长度减去-
的索引
但是,使用拆分将更简单:
var result = strGSPN[0].Split('-')?[1]?.Trim();
请注意,如果字符串中没有分隔符,请在拆分后使用。您试图获取字符串中最后一个字符的索引,即长度-1。您只使用了strGSPN[0].Length,这将超出范围,因为长度从1开始计数,而不是从0开始,但索引从0开始,因此当您在string.Length处获取字符时,您将获取字符串在最后一个字符串后面的位置,从而导致异常。请尝试以下操作:
strGSPN[0].Substring(strGSPN[0].IndexOf('-')+1, strGSPN[0].Length - 1);
string x = "George - 1234";
string b = x.Substring(x.IndexOf("-") + 1, (x.Length - (x.IndexOf("-") + 1)));
其他人也给出了类似的答案 您正在查找以“-”开头并到达字符串末尾的子字符串。您所做的是从indexOf(“-”)+1开始,并经过字符串的末尾
string x = "George - 1234";
string b = x.Substring(x.IndexOf("-") + 1, (x.Length - (x.IndexOf("-") + 1)));
正如其他答案所述,第二个参数是所需子字符串的长度。您超出了导致异常的字符串长度 您可以简单地使用只接受起始索引的
子字符串的重载,而不是自己计算长度或拆分字符串。它将占用字符串的剩余部分。之后,您只需修剪结果
var result = strGSPN[0].Substring(strGSPN[0].IndexOf('-')+1).Trim();
String.Split
,后跟String.Trim()
应该很容易做到。你能给我这方面的代码吗这是教程,这就是它的作用。这将为你在如何使用这些条件下提供坚实的基础。