如何在特定字符串后获取字符串?

时间:2014-03-31 14:24:27

标签: c# regex

如何在文字“播放列表:”之后获取字符串?

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

我做了什么:

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

但它会给我数组,即[0],s [1] ...而我正在搜索能够在特定文本后给出结果的东西。

我想在“播放列表”之后输入字符串,我知道使用正则表达式可能很容易,但目前我对Regex一无所知..

4 个答案:

答案 0 :(得分:3)

使用正则表达式替换,删除带有空字符串的:playlist:之前的所有内容。

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

答案 1 :(得分:3)

您可以使用Substring方法

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

或者在这种情况下,可以通过Split

使用Last方法完成
string output = YT.Split(':').Last();

答案 2 :(得分: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"];

只要您想要序列中的其他值,任何一种方法都会得到回报。

答案 3 :(得分:1)

正则表达式为.+playlist:([^:])