如何在2个字符串之间获取字符串

时间:2016-02-25 12:43:25

标签: c# string

我有一个这样的字符串:

<div class="fsxl fwb">Myname<br />

那么如何获得字符串Myname?
这是我的代码:

public string name(string link)
    {
        WebClient client = new WebClient();
        string htmlCode = client.DownloadString(link);


        var output = htmlCode.Split("<div class="fsxl fwb">","<br />");

        return output.ToString();
    }

但问题是"<div class="fsxl fwb">"它会成为2个字符串"<div class=", ">" and fsxl fwb所以如何修复它?

5 个答案:

答案 0 :(得分:0)

您可以通过解析HTML来解决这个问题,这通常是最佳选择。

快速解决方案是使用正则表达式来获取字符串。这个会做:

<div class="fsxl fwb">(.*?)<br \/>

它将捕获div和第一个<br />之间的输入。

这将是获得答案的C#代码:

string s = Regex.Replace
           ( "(.*)<div class=\"fsxl fwb\">Myname<br />"
           , "<div class=\"fsxl fwb\">(.*?)<br \\/>(.*)"
           , "$2"
           );
Console.WriteLine(s);

答案 1 :(得分:0)

以下是对您的代码的快速修复:

var output = htmlCode.Split(
    new [] { "<div class=\"fsxl fwb\">", "<br />"},
    StringSplitOptions.RemoveEmptyEntries);

return output[0];

它正确地转义引号并使用Split方法的有效override

答案 2 :(得分:0)

var a = @"<div class='fsxl fwb'>Myname<br />";
var b = Regex.Match(a, "(?<=>)(.*)(?=<)");
Console.WriteLine(b.Value);

代码基于:C# Get string between 2 HTML-tags

答案 3 :(得分:0)

使用正则表达式:

public string name(string link)
    {
        WebClient client = new WebClient();
        string htmlCode = client.DownloadString(link);


        Regex regex = new Regex("<div class=\"fsxl fwb\">(.*)<br />");
        Match match = regex.Match(htmlCode);
        string output = match.Groups[1].ToString();

        return output;
    }

答案 4 :(得分:0)

如果你想避免正则表达式,你可以使用这个扩展方法来获取两个其他字符串之间的文本:

public static string ExtractBetween(this string str, string startTag, string endTag, bool inclusive)
    {
        string rtn = null;
        var s = str.IndexOf(startTag);
        if (s >= 0)
        {
            if (!inclusive)
            {
                s += startTag.Length;
            }

            var e = str.IndexOf(endTag, s);
            if (e > s)
            {
                if (inclusive)
                {
                    e += startTag.Length +1;
                }
                rtn = str.Substring(s, e - s);
            }
        }
        return rtn;
    }

示例用法(请注意,您需要将转义字符添加到字符串中)

var s = "<div class=\"fsxl fwb\">Myname<br />";
var r = s.ExtractBetween("<div class=\"fsxl fwb\">", "<br />", false);
Console.WriteLine(r);