我对编程很陌生,我正在尝试将下面的字符串拆分为36.20C,但我一直得到ArgumentOutOfRangeWasUnhandled。为什么呢?
meteor run android-device -p 192.168.178.21:3000 --verbose
预期产量:36.20C
答案 0 :(得分:4)
String.Substring
的第二个参数是长度,但您提供了结束索引。你需要减去它们:
string Temp = inStr.Substring(++indexOfSpace, indexOfC - indexOfSpace);
你也可以从最后删除C
:
string Temp = inStr.Substring(++indexOfSpace).TrimEnd('C'); // using the overload that takes the rest
顺便说一句,在这种情况下,你应该使用IndexOf
的重载和start-index:
int indexOfC = inStr.IndexOf('C', indexOfSpace);
这是一种更简单的方法:
Temp = inStr.Split(':').Last().TrimEnd('C');
答案 1 :(得分:1)
b2
答案 2 :(得分:1)
你可以像
那样做string Temp = inStr.Substring(indexOfSpace + 1, inStr.Length - indexOfSpace - 1)
答案 3 :(得分:1)
如果选中documentation for Substring
,您会看到第二个参数是长度,而不是结束位置。但是,有an overload for SubString
that only needs the start position并且它会将字符串从那里返回到字符串的末尾:
int indexOfSpace = inStr.IndexOf(':');
string Temp = inStr.Substring(indexOfSpace + 1);
答案 4 :(得分:0)
Substring
的第二个参数是长度。您必须更新如下:
string Temp = inStr.Substring(indexOfSpace + 1, indexOfC - indexOfSpace);
答案 5 :(得分:0)
只需使用string.Split()。
string[] temp = inStr.Split(':');
textbox1.Text = temp[1];
// temp[1] returns "36.20C"
// temp[0] returns "Temperature"
答案 6 :(得分:0)
import org.apache.poi.hsmf.MAPIMessage;
public class PoiMsgMime {
public String getMessageMime(String fileName) {
try {
new MAPIMessage(fileName);
return "application/vnd.ms-outlook";
} catch (Exception e) {
return null;
}
}
}
在substring中,第二个参数是length,如果你没有指定任何参数substring进程直到string的结尾。