2011-04-30 56 views
1

我有一个字符串 例如。如何获得字符串的一部分

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

了,我想我的临时串具有值

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

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

+4

你用什么规则来确定你想要的字符串的哪一部分? – Oded 2011-04-30 19:18:41

+0

你只是想要所有以'DC'开头的值?你确定你想要输出为字符串吗?如果你想进一步解析它,这对于这个任务是有意义的,并且一步完成进一步的解析。 – svick 2011-04-30 19:21:01

+0

也可以有其他的OU ..这只是一个例子,它可以是OU = SupportSubLevel3,OU = SupportLevel1,DC = CopTest,DC = copiun2,DC = com – user175084 2011-04-30 19:22:53

回答

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="); 

同样,如果你需要别的东西,请更具体的了解什么你正在努力。

+0

也可以有其他OU ..这只是一个例子,它可以是OU = SupportSubLevel3,OU = SupportLevel1,DC = CopTest,DC = copiun2,DC = com – user175084 2011-04-30 19:22:31

+0

@ user175084:那么,什么决定了你想要开始的地方拿字符串? – 2011-04-30 19:27:30

0

您需要为此使用Substring函数,但是如何使用它取决于您的标准。例如,你可能只是这样做:

tempString = a.Substring(12); 

如果你可以让我们知道你是标准的会非常有用

+0

或者@Jon Skeet在第一个逗号的索引处完成了你的子字符串:) – 2011-04-30 19:22:06

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" 
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
  • 放回一个字符串,每次用逗号分隔
+1

+1顺便说一句'Split(',')'就足够了。 – 2011-04-30 19:29:54

+0

'string.Split()'至少工作[自.NET 1.1](http://msdn.microsoft.com/en-us/library/aa904305%28v=VS.71%29.aspx)。 – svick 2011-05-01 00:54:24

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=*部分的列表,删除所有非DC部分。