c#大量文本分成块

时间:2010-11-17 17:12:20

标签: c# string

C# 我有一大块文字。本文分为评论单位 文字看起来像这样(为了让我不浪费时间解释你能看到的东西)

MikeSmith randdesign第1章第1段 预订randdesign a :)对这本书的评论是徒劳的

Johnblack randdesign第1章第1段 预订randdesign 如果这本书保持开放有时,对这本书的评论是徒劳的 这些行可以是多条和长条评论

willsmith randdesign第1章第1段 预订randdesign a :)没有评论这本书是徒劳的

正如你可以看到这个文本块很有趣,因为我是一个初学者,我在编码方面的经验很少,我有c#3.0 cookbook,我正在尝试应用查找另一个字符串中所有出现的字符串的位置

我可以使用一些常量

1用户名将始终相同。 (willsmith)我有20个用户。

2结构将始终以用户名

开头

3我想要导入的实际内容将始终以::) b :) c:)

开头

我的问题如下

a :)是在另一个字符串中查找字符串的所有出现位置,这是查找数据开始和结束的最佳方法吗?

b :)有没有更快捷的方法可以从文本中删除数据?

c :)有时用户会引用另一个用户,如果我查找姓名,那么我可能会得到误报。我该如何处理?

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

a:是的,这很容易做到。假设您的文本块是一个巨大的字符串,并且该字符串被称为's',那么您可以按新行字符拆分文本,循环遍历每一行,并抓取注释,如下所示:

string s = @"
MikeSmith randdesign chapter 1 paragraph 1 book randdesign a:) comments on the book are futile

Johnblack randdesign chapter 1 paragraph 1 book randdesign a:) comments on the book are futile if the book is left open and sometimes these lines can be multiple and long comments

willsmith randdesign chapter 1 paragraph 1 book randdesign a:) no comments on the book are futile
";

foreach (string line in s.Split('\n'))
{
    if (line.Trim() != "")
    {
        string comments = line.Substring(line.IndexOf("a:) ") + 4);
    }
}

b:也许吧,但这对你来说非常快。

c:如果需要,尝试更改IndexOf()方法。如上所述,您可以定制它以查找任何内容,例如'b :)'和'c :)'。