Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从c中的字符串中获取第二部分#_C#_String - Fatal编程技术网

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()
应该很容易做到。你能给我这方面的代码吗这是教程,这就是它的作用。这将为你在如何使用这些条件下提供坚实的基础。