我试图在位置4处断开一个字符串,然后另存为另一个字符串。子串可以使用简单的A-Z字母,但是你可以帮我解决这个问题。
string messageToSend = "P0011%$1%$6%$1%$1%$Heat And Smoke Detector|1%$1%$7%$1%$1%$Sounder|1%$1%$9%$2%$1%$Input Device Zone 2|";
string myString = messageToSend.Substring(1, messageToSend.Length);
答案 0 :(得分:1)
Substring
有两个签名:
您当前使用的是Substring(int startIndex, int length)
。
顶部的代码示例从索引1(第二个字符)开始,然后是“字符串长度”字符。问题是这会超过字符串末尾的一个字符。
这种情况的简单解决方法是
string myString = messageToSend.Substring(1, messageToSend.Length - 1);
请注意-1
。这与您应用于字符串开头的“offset”值相同。
但是,有一种更简单的方法可以做到这一点,而这与方法的第二种形式有关:Substring(int startIndex)
。
这只要求索引从中开始,并一直到字符串的结尾。你不必担心字符串有多长;它将照顾你。
您的示例可以过滤到这个:
string myString = messageToSend.Substring(1);
或者,如果你想从第四个索引开始:
string myString = messageToSend.Substring(4);
答案 1 :(得分:1)
字符串的其余部分存在长度不匹配。如果您需要特定索引后面的整个字符串,请使用Substring
的重载:
string messageToSend = "P0011%$1%$6%$1%$1%$Heat And Smoke Detector|1%$1%$7%$1%$1%$Sounder|1%$1%$9%$2%$1%$Input Device Zone 2|";
string myString = messageToSend.Substring(4);
如果指定长度,则需要考虑从字符串中删除的字符。
如果指定要删除的字符串的长度,则代码为:
string messageToSend = "P0011%$1%$6%$1%$1%$Heat And Smoke Detector|1%$1%$7%$1%$1%$Sounder|1%$1%$9%$2%$1%$Input Device Zone 2|";
string myString = messageToSend.Substring(1, messageToSend.Length - 6);
答案 2 :(得分:0)
设置string.Length - 1
string messageToSend = "P0011%$1%$6%$1%$1%$Heat And Smoke Detector|1%$1%$7%$1%$1%$Sounder|1%$1%$9%$2%$1%$Input Device Zone 2|";
string myString = messageToSend.Substring(1, messageToSend.Length - 1);