Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.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# 子字符串第一位置全局ID值_C#_Substring - Fatal编程技术网

C# 子字符串第一位置全局ID值

C# 子字符串第一位置全局ID值,c#,substring,C#,Substring,我有字符串,需要返回第一个globalid值-8679926309027194610 我的字符串: string erservice = "globalid=8679926300927194610,ou=services,globalid=00000000000000000000" 我使用了子字符串: string result = erservice.Substring(9, 19); 如何使用另一种方法求解?我可能会更像这样理解它。基本上,找到globalid=键,将子字符串设置为其值

我有字符串,需要返回第一个globalid值-8679926309027194610

我的字符串:

 string erservice = "globalid=8679926300927194610,ou=services,globalid=00000000000000000000"
我使用了子字符串:

string result = erservice.Substring(9, 19);

如何使用另一种方法求解?

我可能会更像这样理解它。基本上,找到
globalid=
键,将子字符串设置为其值,然后删除逗号后面的任何内容。当然,如果您不处理改变位置或长度的参数,您的方式会更干净

const string globalIdName = "globalid=";


string erservice = ...;

var startIndex = erservice.IndexOf(globalIdName);
if (startIndex> -1)
{
    var ret = erservice.SubString(startIndex + globalIdName.Length);

    var comma = ret.IndexOf(',');

    if(comma > -1)
    {
       ret = ret.Remove(comma);
    }

    return ret;
}
else
{
    throw new ArgumentException();
}
试试看

使用正则表达式怎么样

string erservice = "globalid=8679926300927194610,ou=services,globalid=00000000000000000000";
var globalid = Regex.Match(erservice, @"globalid=(\d+)").Groups[1].Value;

这取决于你需要获得什么样的信息

以下是一些可能对您有用的技巧

string erservice = "globalid=8679926300927194610,ou=services,globalid=00000000000000000000";

int lastIndex = 0;
int index;
while ((index = erservice.IndexOf("globalid", lastIndex)) >= 0)
{
    // Contains everything including and after each globalid=
    string part = erservice.Substring(index);
    lastIndex = index + 1;

    // do work
}

foreach (string section in erservice.Split(','))
{
    // Gets each key/value pair
    string[] parts = section.Split('=');
    string key = parts[0];
    string value = parts[1];

    // do work
}

你认为你的解决方案有问题吗?globalid号的长度会改变吗?试试:
string str=erservice.Split(',').First().Split('=').Last()@Habib,谢谢。我希望你能回答
string erservice = "globalid=8679926300927194610,ou=services,globalid=00000000000000000000";

int lastIndex = 0;
int index;
while ((index = erservice.IndexOf("globalid", lastIndex)) >= 0)
{
    // Contains everything including and after each globalid=
    string part = erservice.Substring(index);
    lastIndex = index + 1;

    // do work
}

foreach (string section in erservice.Split(','))
{
    // Gets each key/value pair
    string[] parts = section.Split('=');
    string key = parts[0];
    string value = parts[1];

    // do work
}