substring first position globalid value

时间:2014-09-10 21:12:19

标签: c# substring

我有字符串,需要先返回globalid值 - 8679926300927194610

我的字符串:

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

我使用了substring:

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

如何使用其他方法解决?

4 个答案:

答案 0 :(得分:3)

如何使用正则表达式?

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

答案 1 :(得分:0)

我可能会更喜欢这样。基本上,找到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();
}

答案 2 :(得分:0)

尝试Regex

string result = System.Text.RegularExpressions.Regex.Replace(
    erservice, 
    "^globalid=([0-9]+).*$", 
    "$1");

答案 3 :(得分:0)

这取决于您需要获得哪些信息。

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

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
}