Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/334.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# - Fatal编程技术网

C# 拆分字符串时出错

C# 拆分字符串时出错,c#,C#,我对编程非常陌生,我正试图将下面的字符串拆分为36.20C,但我一直无法处理ArgumentOutofRange。为什么? private void button1_Click(object sender, EventArgs e) { string inStr = "Temperature:36.20C"; int indexOfSpace = inStr.IndexOf(':'); //stores the address of th

我对编程非常陌生,我正试图将下面的字符串拆分为36.20C,但我一直无法处理ArgumentOutofRange。为什么?

private void button1_Click(object sender, EventArgs e)
    {
        string inStr = "Temperature:36.20C";

        int indexOfSpace = inStr.IndexOf(':');
        //stores the address of the space 
        int indexOfC = inStr.IndexOf("C");
        //stores the address of char C

        string Temp = inStr.Substring(indexOfSpace + 1, indexOfC);

        textBox1.Text = Temp;
    }
预期输出:36.20摄氏度

var arrayStr = inStr.split(':');
textbox1.text = arrayStr[1];
string Temp = inStr.Substring(indexOfSpace + 1, inStr.Length - indexOfSpace - 1)
你可以这样做

string Temp = inStr.Substring(indexOfSpace + 1, inStr.Length - indexOfSpace - 1)
的第二个参数是长度,但您已经提供了结束索引。您需要减去它们:

string Temp = inStr.Substring(++indexOfSpace, indexOfC - indexOfSpace);
您还可以从末尾删除
C

string Temp = inStr.Substring(++indexOfSpace).TrimEnd('C'); // using the overload that takes the rest
另一方面,在这种情况下,您应该将
IndexOf
的重载与开始索引一起使用:

int indexOfC = inStr.IndexOf('C', indexOfSpace);
以下是一个更简单的方法:

Temp = inStr.Split(':').Last().TrimEnd('C');
的第二个参数是长度,但您已经提供了结束索引。您需要减去它们:

string Temp = inStr.Substring(++indexOfSpace, indexOfC - indexOfSpace);
您还可以从末尾删除
C

string Temp = inStr.Substring(++indexOfSpace).TrimEnd('C'); // using the overload that takes the rest
另一方面,在这种情况下,您应该将
IndexOf
的重载与开始索引一起使用:

int indexOfC = inStr.IndexOf('C', indexOfSpace);
以下是一个更简单的方法:

Temp = inStr.Split(':').Last().TrimEnd('C');
如果检查,您将看到第二个参数是长度,而不是结束位置。但是,有,它将返回从那里到字符串末尾的字符串:

int indexOfSpace = inStr.IndexOf(':');
string Temp = inStr.Substring(indexOfSpace + 1);
如果检查,您将看到第二个参数是长度,而不是结束位置。但是,有,它将返回从那里到字符串末尾的字符串:

int indexOfSpace = inStr.IndexOf(':');
string Temp = inStr.Substring(indexOfSpace + 1);

子字符串的第二个参数是长度。您必须按以下方式更新:

string Temp = inStr.Substring(indexOfSpace + 1, indexOfC - indexOfSpace);

子字符串的第二个参数是长度。您必须按以下方式更新:

string Temp = inStr.Substring(indexOfSpace + 1, indexOfC - indexOfSpace);
只需使用string.Split()

只需使用string.Split()

在子字符串中,第二个参数是长度,如果不指定任何参数,则子字符串将一直处理到字符串末尾


在子字符串中,第二个参数是长度,如果您不指定任何参数,子字符串将一直处理到字符串末尾。

if“Temperature:”只是一个示例,还是要从字符串中删除的实际值?如果是后者,则“var temp=仪表更换”(“温度:,”);你想从结尾删除
C
,还是你为什么要确定它的索引并使用
Substring
?@Nicholas Chan:你知道你可以为你的问题选择答案吗?如果“Temperature:”只是一个例子,或者你想从字符串中删除的真实值?如果是后者,则“var temp=仪表更换”(“温度:,”);你想从末尾删除
C
,还是你为什么要确定它的索引并使用
Substring
?这是一个糟糕的答案,原因如下:1
++indexOfSpace
而不是
indexOfSpace+1
是一条可怕的建议,因为它不必要地修改了变量;2.
indexOfC-indexOfSpace
参数不是必需的,3。然后,它充满了关于从字符串末尾删除“C”的多余建议,OP不需要这些建议。@DavidArno:1)
indexOfSpace
可以修改,因为OP只对冒号后标记的开始索引感兴趣。否则,他必须始终使用
indexOfSpace+1
。2)
indexOfC-indexOfSpace
需要向OP展示如何正确使用
子字符串,因为他假设第二个参数是结束索引3)我只是想向OP展示一种不同的方法,从结束处删除
C
,而不是使用
IndexOf
子字符串
.1),因为它可以修改,并不意味着它应该被修改。只有在必要时才改变变量的值。你的建议是错误的做法。2) 存在完全不需要第二个参数的重载。3) OP没有询问如何删除
C
,因此您没有回答这个问题。@DavidArno:将正确的值赋给变量,而不是总是使用错误的+1,这是一个不错的做法。我已经证明了有一个超负荷,它占据了字符串的其余部分,我只是想展示first OP的方法,并告诉他出了什么问题。我认为他想删除
C
,因为他已经确定了它的索引,并将其用作
子字符串的第二个参数。但再看看这个问题,可能是我错了。那么不清楚他为什么对
C
的索引如此感兴趣。为什么这个答案被如此高的投票率?这是一个糟糕的答案,原因如下:1
++indexOfSpace
而不是
indexOfSpace+1
是一条可怕的建议,因为它不必要地修改了变量;2.
indexOfC-indexOfSpace
参数不是必需的,3。然后,它充满了关于从字符串末尾删除“C”的多余建议,OP不需要这些建议。@DavidArno:1)
indexOfSpace
可以修改,因为OP只对冒号后标记的开始索引感兴趣。否则,他必须始终使用
indexOfSpace+1
。2)
indexOfC-indexOfSpace
需要向OP展示如何正确使用
子字符串,因为他假设第二个参数是结束索引3)我只是想向OP展示一种不同的方法,从结束处删除
C
,而不是使用
IndexOf
子字符串
.1),因为它可以修改,并不意味着它应该被修改。只有在必要时才改变变量的值。你的建议是错误的做法。2) 存在完全不需要第二个参数的重载。3) OP没有询问如何删除
C
,因此您没有回答这个问题。@DavidArno:将正确的值赋给变量,而不是总是使用错误的+1,这是一个不错的做法。我已经证明了有一个超负荷,它占据了字符串的其余部分,我只是想展示first OP的方法,并告诉他出了什么问题。我认为他想删除
C
,因为他已经确定了它的索引,并将其用作
子字符串的第二个参数。但再看看这个问题,它是c