如何获取 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
那么如何解决呢?
以下是对代码的快速修复:
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);