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

本文关键字:字符串 之间 何获取 获取 | 更新日期: 2023-09-27 18:36:20

我有一个这样的字符串:

<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那么如何解决呢?

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

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

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

它正确转义引号,并使用 Split 方法的有效重写。

您可以通过解析 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);

使用正则表达式:

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

基于以下代码的代码:C# 获取 2 个 HTML 标记之间的字符串

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

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);