我有一个文件。每行如下所示:
[00000] 0xD176234F81150469: foo
我想要做的是,如果一行包含某个子字符串,我想提取找到的子字符串右侧的所有内容。例如,如果我0xD176234F81150469:
在上面的行中搜索,它将返回foo
. 每个字符串的长度都是可变的。我正在使用 C#。
需要注意的是,文件中的每一行都与上面类似,左侧方括号中包含一个 base-16 数字,后跟一个十六进制哈希和一个分号,然后是一个英文字符串。
我该怎么办?
编辑
这是我的代码:
private void button1_Click(object sender, EventArgs e)
{
Form1 box = new Form1();
if(MessageBox.Show("This process may take a little while as we loop through all the books.", "Confirm?", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes)
{
XDocument doc = XDocument.Load(@"C:\Users\****\Desktop\books.xml");
var Titles = doc.Descendants("Title");
List<string> list = new List<string>();
foreach(var Title in Titles)
{
string searchstr = Title.Parent.Name.ToString();
string val = Title.Value;
string has = @"Gameplay/Excel/Books/" + searchstr + @":" + val;
ulong hash = FNV64.GetHash(has);
var hash2 = string.Format("0x{0:X}", hash);
list.Add(val + " (" + hash2 + ")");
// Sample output: "foo (0xD176234F81150469)"
}
string[] books = list.ToArray();
File.WriteAllLines(@"C:\Users\****\Desktop\books.txt", books);
}
else
{
MessageBox.Show("Aborted.", "Aborted");
}
}
我还遍历了文件的每一行,将其添加到list<>
. 我一定是在尝试建议时不小心删除了这个。另外,我对 C# 很陌生。我被难倒的主要事情是匹配。