我有一个字符串 例如
string a = "OU=QALevel1,DC=CopTest,DC=copiun2,DC=com";
现在我希望我的临时字符串具有值
tempString = "DC=CopTest,DC=copiun2,DC=com"
我需要从字符串中删除所有出现的OU
值对。这些总是首先出现在字符串中。
答案 0 :(得分:4)
嗯,这取决于你希望它是什么理由。如果您想要在第一个逗号后面的所有内容,您可以使用:
int comma = a.IndexOf(',');
if (comma != -1)
{
string tempString = a.Substring(comma + 1);
// Use tempString
}
else
{
// Deal with there not being any commas
}
如果您不想分割字符串,请提供有关您需要做的更多信息。
编辑:如果您需要“第一个逗号后跟DC =”,您可以将第一行更改为:
int comma = a.IndexOf(",DC=");
同样,如果您还需要其他内容,请 更具体地说明您要做的事情。
答案 1 :(得分:3)
您可以使用LINQ来帮助:
string foo = "OU=SupportSubLevel3,OU=SupportLevel1,DC=CopTest,DC=copiun2,DC=com";
string sub = string.Join(",",
foo.Split(',')
.Where(x => x.StartsWith("DC")));
Console.WriteLine(sub);
答案 2 :(得分:1)
我怀疑你真正需要的是所有域组件。你甚至可能想要拆分它们。此示例将支持任何DN语法,并从中提取DC:
string a = "OU=QALevel1,DC=CopTest,DC=copiun2,DC=com";
// Separate to parts
string[] parts = a.Split(',');
// Select the relevant parts
IEnumerable<string> dcs = parts.Where(part => part.StartsWith("DC="));
// Join them again
string result = string.Join(",", dcs);
请注意,您同时获得dcs
- 所有DC部分的枚举,以及result
- 您请求的字符串。但最重要的是,这段代码有意义 - 当你看到它时,你确切地知道它会做什么 - 返回一个字符串,其中包含原始字符串的所有DC=*
部分的列表,删除任何非直流部件。
答案 3 :(得分:0)
您需要使用Substring函数,但是如何使用它取决于您的标准。例如,您可以这样做:
tempString = a.Substring(12);
如果您能告诉我们您的标准非常有用
答案 4 :(得分:0)
假设OU
总是在其余值对之前,这将获得最后OU
值之后的所有字符串:
string a = "OU=QALevel1,DC=CopTest,DC=copiun2,DC=com";
string res = a.Substring(a.IndexOf(',', a.LastIndexOf("OU=")) + 1);
// res = "DC=CopTest,DC=copiun2,DC=com"