2011-04-30 61 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部分。

相關問題