2014-03-31 151 views
0

如何在文本「播放列表:」之後獲取字符串?如何獲得特定字符串後的字符串?

var YT= "tag:youtube.com,2008:user:hollywoodlife09:playlist:PLDovhwKa3P88MwGzYxMDMfiAiiEWxAJYj" ; 

我所做的:

string[] s = YT.Split(':'); 

但它會給我陣列即s [0],S [1] ...和我正在尋找的東西后,可以給結果特定的文本。

我想字符串後,「播放列表」,我知道這可能是易於使用正則表達式,但目前我沒有任何想法的正則表達式..

回答

2

您可以使用子串方法

var output = inputString.SubString(inputString.LastIndexOf("playlist") + 8); 

或在這種情況下,這是可以做到使用Last方法通過Split

string output = YT.Split(':').Last(); 
+2

我會使用這種方法,因爲這是一個非常簡單的程序,正則表達式通常大大降低了代碼的可讀性。 – Amicable

+0

hmm ... tats gr8 :) – user3379655

+0

您也可以在「播放列表:」上分割。 – iheanyi

3

使用正則表達式替換,在:playlist:空之前刪除一切串。

string playlist = Regex.Replace(YT, ".*:playlist:", ""); 
+0

非常感謝你,先生, – user3379655

1

的正則表達式是.+playlist:([^:])

3

更可再使用,

static IEnumerable<KeyValuePair<string, string>> SplitPairs(
    this string source, 
    params char[] seperators) 
{ 
    var values = source.Split(seperators); 
    for(var i = 0; i < values.Length; i += 2) 
    { 
     yield return new KeyValuePair<string, string>(
      values[i], 
      values[i + 1]); 
    } 
} 

,所以你可以做,

var yTlookup = YT.SplitPairs(':').ToDictionary(p => p.Key, p => p.Value); 
var playList = yTLookup["playlist"]; 

,或者如果你不想延期,

var segments = YS.Split(new[] { ':' }); 
var ySlookup = Enumerable.Range(0, segemnts.Length/2) 
    .ToDictionary(i => segments[i * 2], i => segments[(i * 2) + 1]); 

所以你可以做,

var playlist = ysLookup["playlist"]; 

任何一種方法一旦你想從序列中獲得另一個值,就會得到回報。

相關問題