Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/258.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#中使用substring函数会导致ArgumentOutOfRangeException异常_C#_Asp.net_Asp.net Mvc - Fatal编程技术网

在C#中使用substring函数会导致ArgumentOutOfRangeException异常

在C#中使用substring函数会导致ArgumentOutOfRangeException异常,c#,asp.net,asp.net-mvc,C#,Asp.net,Asp.net Mvc,如何从字符串pid={id=2}中提取值2 我的代码看起来像 string pidnew= pid.Substring(3,5) 它向我显示了错误,我做错什么了吗?如果只有一个数字,你可以直接将其正则化 string pidnew = Regex.Match(pid, @"\d+").Value; 而且你不必担心地点 如果要在stateid上匹配: string pidnew = Regex.Match(pid, @"(?<=stateid=)\d+",RegexOptions.Ign

如何从
字符串pid={id=2}
中提取值2

我的代码看起来像

string pidnew= pid.Substring(3,5)

它向我显示了错误,我做错什么了吗?

如果只有一个数字,你可以直接将其正则化

string pidnew = Regex.Match(pid, @"\d+").Value;
而且你不必担心地点

如果要在stateid上匹配:

string pidnew = Regex.Match(pid, @"(?<=stateid=)\d+",RegexOptions.IgnoreCase).Value;

string pidnew=Regex.Match(pid,@)(?如果只有一个数字,您可以将其正则化

string pidnew = Regex.Match(pid, @"\d+").Value;
而且你不必担心地点

如果要在stateid上匹配:

string pidnew = Regex.Match(pid, @"(?<=stateid=)\d+",RegexOptions.IgnoreCase).Value;

string pidnew=Regex.Match(pid,@)(?如果只有一个数字,您可以将其正则化

string pidnew = Regex.Match(pid, @"\d+").Value;
而且你不必担心地点

如果要在stateid上匹配:

string pidnew = Regex.Match(pid, @"(?<=stateid=)\d+",RegexOptions.IgnoreCase).Value;

string pidnew=Regex.Match(pid,@)(?如果只有一个数字,您可以将其正则化

string pidnew = Regex.Match(pid, @"\d+").Value;
而且你不必担心地点

如果要在stateid上匹配:

string pidnew = Regex.Match(pid, @"(?<=stateid=)\d+",RegexOptions.IgnoreCase).Value;

string pidnew=Regex.Match(pid,@)(
Substring
的第二个参数告诉您要使用的字符数。因此,如果您有字符串“{id=2}”,并执行
string pidnew=pid.Substring(3,5)
,您要说的是:“从字符串中的字符索引3开始(第四个字符),然后使用五个字符”。这意味着字符串长度至少需要8个字符。由于您只希望获取一个字符,请将第二个参数更改为1。如果括号是字符串的一部分,则还应从索引4开始,而不是从3开始

您实际需要的是:
stringpidnew=pid.Substring(4,1);

参数

startIndex 类型:System.Int32 此实例中子字符串的从零开始的字符位置

长度 类型:System.Int32 子字符串中的字符数


Substring
的第二个参数告诉您要获取的字符数。因此,如果您有字符串“{id=2}”,并执行
string pidnew=pid.Substring(3,5)
,您要说的是:“从字符串中的字符索引3开始(第四个字符),获取五个字符”。这意味着字符串长度至少需要8个字符。由于您只希望获取一个字符,请将第二个参数更改为1。如果括号是字符串的一部分,则还应从索引4开始,而不是从3开始

您实际需要的是:
stringpidnew=pid.Substring(4,1);

参数

startIndex 类型:System.Int32 此实例中子字符串的从零开始的字符位置

长度 类型:System.Int32 子字符串中的字符数


Substring
的第二个参数告诉您要获取的字符数。因此,如果您有字符串“{id=2}”,并执行
string pidnew=pid.Substring(3,5)
,您要说的是:“从字符串中的字符索引3开始(第四个字符),获取五个字符”。这意味着字符串长度至少需要8个字符。由于您只希望获取一个字符,请将第二个参数更改为1。如果括号是字符串的一部分,则还应从索引4开始,而不是从3开始

您实际需要的是:
stringpidnew=pid.Substring(4,1);

参数

startIndex 类型:System.Int32 此实例中子字符串的从零开始的字符位置

长度 类型:System.Int32 子字符串中的字符数


Substring
的第二个参数告诉您要获取的字符数。因此,如果您有字符串“{id=2}”,并执行
string pidnew=pid.Substring(3,5)
,您要说的是:“从字符串中的字符索引3开始(第四个字符),获取五个字符”。这意味着字符串长度至少需要8个字符。由于您只希望获取一个字符,请将第二个参数更改为1。如果括号是字符串的一部分,则还应从索引4开始,而不是从3开始

您实际需要的是:
stringpidnew=pid.Substring(4,1);

参数

startIndex 类型:System.Int32 此实例中子字符串的从零开始的字符位置

长度 类型:System.Int32 子字符串中的字符数


要从字符串中获取单个值,如
string pid=“{id=2,genderid=5,stateid=4}”
,可以使用以下方法:

public string GetValue(string idPart, string test)
{
    var escIdPart = Regex.Escape(idPart);
    var pattern = string.Format("(?<=[\\{{\\s,]{0}\\s*=\\s*)\\d+", escIdPart);
    var result = default(string);
    var match = Regex.Match(test, pattern, RegexOptions.IgnoreCase);
    if (match.Success)
    {
        result = match.Value;
    }
    return result;
}

...

var pid = "{id=2, genderid=5, stateid=4}";

var id = GetValue("id", pid); // returns "2"
var genderid = GetValue("genderid", pid); // returns "5"
var stateid = GetValue("stateid", pid); // returns "4"
publicstringgetvalue(stringidpart,stringtest)
{
var escIdPart=Regex.Escape(idPart);

var pattern=string.Format(“(?要从字符串中获取单个值,如
string pid=“{id=2,genderid=5,stateid=4}”
,可以使用以下方法:

public string GetValue(string idPart, string test)
{
    var escIdPart = Regex.Escape(idPart);
    var pattern = string.Format("(?<=[\\{{\\s,]{0}\\s*=\\s*)\\d+", escIdPart);
    var result = default(string);
    var match = Regex.Match(test, pattern, RegexOptions.IgnoreCase);
    if (match.Success)
    {
        result = match.Value;
    }
    return result;
}

...

var pid = "{id=2, genderid=5, stateid=4}";

var id = GetValue("id", pid); // returns "2"
var genderid = GetValue("genderid", pid); // returns "5"
var stateid = GetValue("stateid", pid); // returns "4"
publicstringgetvalue(stringidpart,stringtest)
{
var escIdPart=Regex.Escape(idPart);

var pattern=string.Format(“(?要从字符串中获取单个值,如
string pid=“{id=2,genderid=5,stateid=4}”
,可以使用以下方法:

public string GetValue(string idPart, string test)
{
    var escIdPart = Regex.Escape(idPart);
    var pattern = string.Format("(?<=[\\{{\\s,]{0}\\s*=\\s*)\\d+", escIdPart);
    var result = default(string);
    var match = Regex.Match(test, pattern, RegexOptions.IgnoreCase);
    if (match.Success)
    {
        result = match.Value;
    }
    return result;
}

...

var pid = "{id=2, genderid=5, stateid=4}";

var id = GetValue("id", pid); // returns "2"
var genderid = GetValue("genderid", pid); // returns "5"
var stateid = GetValue("stateid", pid); // returns "4"
publicstringgetvalue(stringidpart,stringtest)
{
var escIdPart=Regex.Escape(idPart);

var pattern=string.Format(“(?要从字符串中获取单个值,如
string pid=“{id=2,genderid=5,stateid=4}”
,可以使用以下方法:

public string GetValue(string idPart, string test)
{
    var escIdPart = Regex.Escape(idPart);
    var pattern = string.Format("(?<=[\\{{\\s,]{0}\\s*=\\s*)\\d+", escIdPart);
    var result = default(string);
    var match = Regex.Match(test, pattern, RegexOptions.IgnoreCase);
    if (match.Success)
    {
        result = match.Value;
    }
    return result;
}

...

var pid = "{id=2, genderid=5, stateid=4}";

var id = GetValue("id", pid); // returns "2"
var genderid = GetValue("genderid", pid); // returns "5"
var stateid = GetValue("stateid", pid); // returns "4"
publicstringgetvalue(stringidpart,stringtest)
{
var escIdPart=Regex.Escape(idPart);

var pattern=string.Format((?第二个参数(长度)应该是1second参数(长度)应该是1second参数(长度)应该是1second参数(长度)应该是1second参数(长度)如果字符串中有更多的数字,比如eample字符串pid={id=2,genderid=5,stateid=4}当字符串示例字符串pid={selectedid=9,genderid=1}中有多个整数时,如何从字符串单独获取Stateid对我来说不起作用。如何获取genderid我确实喜欢,但它给了我nul