如何在两个数字之间查找字符串并将其存储在数组中
本文关键字:串并 字符串 字符 存储 数组 查找 之间 数字 两个 | 更新日期: 2023-09-27 18:35:05
下面的代码存储在一个名为str1
的字符串中,数字表示行号,文本表示php代码行。现在,我想分别提取行号和代码行。
* 47: echo
<http://php.net/echo> echo "<div id=" . $var . ">content</div>";
o 46: $var = htmlspecialchars($v, ENT_QUOTES);
+ 45: $v = $_SESSION['UserData'];
到目前为止,我已经尝试过
str1.Split(new char[] { ':', ';' });
但这也会断开 'http: ' 中的字符串,并且在返回的数组中包含野生字符 ' ''r。如何删除野生字符 ' ''r + o?或者有没有其他方法可以在两个数字之间提取数字和字符串?
试试这个:
string str1 = "47: echo <http://php.net/echo> echo '"<div id='" . $var . '">content</div>'"; " + Environment.NewLine
+ "o 46: $var = htmlspecialchars($v, ENT_QUOTES);" + Environment.NewLine
+ "+ 45: $v = $_SESSION['UserData']; ";
var matches = System.Text.RegularExpressions.Regex.Matches(str1, @"(['d]+)?:(.*)?'r'n?", System.Text.RegularExpressions.RegexOptions.Multiline);
foreach(Match m in matches)
{
Console.WriteLine(m.Groups[1].Value);
Console.WriteLine(m.Groups[2].Value);
}
Regex regex = new Regex(@"(?<LineNumber>'d+)[:](?<Code>.+)$");
using (StreamReader reader = new StreamReader("TextFile1.txt"))
{
string s = null;
while ((s = reader.ReadLine()) != null)
{
Match match = regex.Match(s);
if (match.Success)
{
Console.WriteLine("{0}: {1}", match.Groups["LineNumber"].Value,
match.Groups["Code"].Value);
}
}
}
将输出:
47:回声
46: $var = htmlspecialchars($v, ENT_QUOTES);
45: $v = $_SESSION["用户数据"];