如何获得字符串的一部分

时间:2011-04-30 19:17:52

标签: c# string

我有一个字符串 例如

string a =  "OU=QALevel1,DC=CopTest,DC=copiun2,DC=com";

现在我希望我的临时字符串具有值

 tempString = "DC=CopTest,DC=copiun2,DC=com"

我需要从字符串中删除所有出现的OU值对。这些总是首先出现在字符串中。

5 个答案:

答案 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);
  • 将字符串拆分为逗号
  • 中的数组
  • 仅采用以DC
  • 开头的那些
  • 放回一个字符串,用逗号分隔每个

答案 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"