2015-09-14 184 views
-3

這可能是一個超級簡單的問題,但我似乎無法弄清楚。你知道如何提取字符串中'/'後的部分。所以對於如下:從字符串結尾開始,直到特殊字符c#

[HKEY_LOCAL_MACHINE\SOFTWARE\4YourSoul\Server\ReportEMailService\OrderConfirmation_SynergyWorldInc] 

所以我只想'OrderConfirmation_SynergyWorldInc'部分。我得到了271個條目,我只需要提取結尾部分(如果有幫助的話,所有這些部分之前都有這些部分)。

謝謝!

+1

任何嘗試??????? – vks

+6

String.LastIndexOf和string.SubString –

+5

在您的示例中,該字符串根本不包含任何「/」符號。 –

回答

-3
string pattern = ".*\\(\w*)"; 
string value = "[HKEY_LOCAL_MACHINE\SOFTWARE\4YourSoul\Server\ReportEMailService\OrderConfirmation_SynergyWorldInc]" 
Regex r = new Regex(pattern); 
Match m = r.Match(value); 
+4

決定你的想法 - 如果你(理所當然)認爲這個問題沒有研究成果,那麼*不要回答它,而不是提供一個對提問者有50%敵意的可憐答案。 –

4

如果你有一個單一的入口...

你需要一點微調之後使用LastIndexOfSubstring

var s = @"[HKEY_LOCAL_MACHINE\SOFTWARE\4YourSoul\Server\ReportEMailService\OrderConfirmation_SynergyWorldInc]"; 
s = s.Trim('[',']'); 
Console.Write(s.Substring(s.LastIndexOf('\\') + 1)); 

結果:OrderConfirmation_SynergyWorldInc

IF YOU HAVE多個記錄...

You c一個使用正則表達式從含有[...]子一個大的文本提取多個匹配:

[^\\\[\]]+(?=\]) 

demo

對於[HKEY_LOCAL_MACHINE\SOFTWARE\4YourSoul\Server\ReportEMailService\OrderConfirmation_SynergyWorldInc][SOMEENTRY]字符串,那麼你將得到2個結果:

enter image description here

的正則表達式匹配

  • [^\\\[\]]+ - 1個或多個字符比][\
  • (?=\])另一方面 - 端]字符之前。

C#:

var results = Regex.Matches(s, @"[^\\\[\]]+(?=\])").OfType<Match>().Select(p => p.Value).ToList(); 
+0

誰投降,請留言。 –

+1

由於'Substring'和'LastIndexOf'的投票速度比使用'Split'快,並且是觸及多個條目問題的唯一答案。 – juharr

+0

雖然如果字符串不包含任何反斜槓,你仍然會得到開放的括號,但這可能不是一個需要擔心的問題。 – juharr

0

嘗試:

string orderConfirmation = yourString.Split(new []{'\\\'}).Last(); 

您也可能要刪除的最後一個字符,如果括號包括的字符串中。

0
var s = @"[HKEY_LOCAL_MACHINE\SOFTWARE\4YourSoul\Server\ReportEMailService\OrderConfirmation_SynergyWorldInc]"; 
Console.WriteLine (s.Trim(']').Split('\\').Last()); 

打印

OrderConfirmation_SynergyWorldInc 
0
var key = @"[HKEY_LOCAL_MACHINE\SOFTWARE\4YourSoul\Server\ReportEMailService\OrderConfirmation_SynergyWorldInc]"; 

      key = key.Replace("[", string.Empty); 
      key = key.Replace("]", string.Empty); 
      var splitkeys =key.Split('\\'); 

      if (splitkeys.Any()) 
      { 
       string result = splitkeys.Last(); 
      } 
+0

'string.Split'永遠不會返回一個空數組,所以'Any'檢查總是'true'。 – juharr

+0

@juharr:檢查習慣:P – PankajH

相關問題