2014-03-31 117 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"]; 

任何一种方法一旦你想从序列中获得另一个值,就会得到回报。

相关问题