我有字符串,需要先返回globalid值 - 8679926300927194610
我的字符串:
string erservice = "globalid=8679926300927194610,ou=services,globalid=00000000000000000000"
我使用了substring:
string result = erservice.Substring(9, 19);
如何使用其他方法解决?
答案 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
}