C# 无法从半个字母到最后一个字母的子字符串

C# 无法从半个字母到最后一个字母的子字符串,c#,string,substring,C#,String,Substring,所以我想用SteamKit2做一些实验。 当我试着用开关这样的命令来切换游戏时,出现了一个问题。命令本身就是'!玩蒸汽游戏APPID'。我想让子字符串做的是只检索AppID号,而不检索“!扮演“角色”。我将其从6子串(因为空格也被计算为字符),但现在我不确定如何使其从6子串到最大值。我使用的是下面的内容,但它不起作用(抛出我System.ArgumentOutOfRangeException) 不知道为什么这样做不起作用,但我稍后在代码中尝试将字符串转换为整数值,因为SetGamePlaying

所以我想用SteamKit2做一些实验。 当我试着用开关这样的命令来切换游戏时,出现了一个问题。命令本身就是'!玩蒸汽游戏APPID'。我想让子字符串做的是只检索AppID号,而不检索“!扮演“角色”。我将其从6子串(因为空格也被计算为字符),但现在我不确定如何使其从6子串到最大值。我使用的是下面的内容,但它不起作用(抛出我System.ArgumentOutOfRangeException)


不知道为什么这样做不起作用,但我稍后在代码中尝试将字符串转换为整数值,因为SetGamePlaying似乎不接受字符串,这就是为什么我要将其子字符串(将“!Play”切掉,所以只使用数字)并将子字符串转换为整数值,用于SetGamePlaying。

您正在尝试获取字符串的完整长度:

string appidraw = message.Substring(6, (message.Length));
string appidraw = message.Substring(6);
string appidraw = message.Replace("!play ", "");
超出了输入字符串的范围

您需要缩短您在起始位置的金额:

string appidraw = message.Substring(6, (message.Length - 6));
使长度保持在范围内。但是,正如Tim在中所指出的,如果您只是获取字符串的右侧部分,则根本不需要length参数:

string appidraw = message.Substring(6, (message.Length));
string appidraw = message.Substring(6);
string appidraw = message.Replace("!play ", "");
或者,只需从字符串中删除命令:

string appidraw = message.Substring(6, (message.Length));
string appidraw = message.Substring(6);
string appidraw = message.Replace("!play ", "");

但是,这将删除所有出现的“!play”而不仅仅是第一个,因此应小心使用。

您正在尝试获取字符串的完整长度:

string appidraw = message.Substring(6, (message.Length));
string appidraw = message.Substring(6);
string appidraw = message.Replace("!play ", "");
超出了输入字符串的范围

您需要缩短您在起始位置的金额:

string appidraw = message.Substring(6, (message.Length - 6));
使长度保持在范围内。但是,正如Tim在中所指出的,如果您只是获取字符串的右侧部分,则根本不需要length参数:

string appidraw = message.Substring(6, (message.Length));
string appidraw = message.Substring(6);
string appidraw = message.Replace("!play ", "");
或者,只需从字符串中删除命令:

string appidraw = message.Substring(6, (message.Length));
string appidraw = message.Substring(6);
string appidraw = message.Replace("!play ", "");

但是,这将删除所有出现的“!play”而不仅仅是第一个,因此应小心使用。

子字符串
希望开始索引和要拾取的字符数,而不是最后一个索引(无论如何都是
message.Length-1)

使用


Substring
希望开始索引和要拾取的字符数,而不是最后一个索引(无论如何都是
message.Length-1)

使用


Substring
接受两个参数:起始索引和子字符串的长度。第一个参数是正确的,但您需要将第二个参数更改为
(message.Length)-6
,以给出:

string appidraw = message.Substring(6, (message.Length - 6));

作为旁注,在C#中,从
0
开始计数,而不是从
1
开始计数,因此字符串中最后一个字符的索引将是其长度小于
1
。因此,如果需要引用最后一个字符,可以使用
message.Length-1

子字符串
接受两个参数:起始索引和子字符串的长度。第一个参数是正确的,但您需要将第二个参数更改为
(message.Length)-6
,以给出:

string appidraw = message.Substring(6, (message.Length - 6));

作为旁注,在C#中,从
0
开始计数,而不是从
1
开始计数,因此字符串中最后一个字符的索引将是其长度小于
1
。因此,如果需要引用最后一个字符,可以使用
message.Length-1

子字符串期望长度作为第二个参数,即从起始索引开始的长度。如果将
message.Length
添加到6,则字符串的长度明显超过6

如果您想使用剩余部分,请使用:


子字符串期望长度作为第二个参数,即从起始索引开始的长度。如果将
message.Length
添加到6,则字符串的长度明显超过6

如果您想使用剩余部分,请使用:


string appidraw=message.Replace(“!play”,”)@OguzOzgul,这可能在这种情况下有效,但不是一般情况:它将删除字符串中出现的每一个“!play”,而不仅仅是起始字符串。您认为我不知道:)他正试图从“!play”的末尾开始获取字符串的其余部分。这至少更安全。string appidraw=message.Replace(“!play”,”)@OguzOzgul,这可能在这种情况下有效,但不是一般情况:它将删除字符串中出现的每一个“!play”,而不仅仅是起始字符串。您认为我不知道:)他正在尝试从“!play”的末尾开始获取字符串的其余部分。至少这样更安全。