在C#中从文件中获取分隔符之间的字符串

时间:2012-07-03 14:17:34

标签: c#

也许问题很熟悉,但在这种情况下我需要解释。

我们假设我有一个名为test.txt的文件。它具有以下内容:

An example of this line. The line has more than 20 characters.
[sql]SELECT * FROM LINE WHERE aLine = '123'[/sql]
blah blah blah blah...

或者是什么

An example of this line. The line has more than 20 characters.
[sql]SELECT * FROM 
       LINE 
     WHERE aLine = '123'[/sql]
blah blah blah blah...

[sql] SELECT * FROM ME[/sql]

 etc..er
[sql]
   SELECT * FROM ALL
 [/sql]

我想在[sql][/sql]分隔符之间添加一个字符串。

怎么做?使用正则表达式?

感谢您的耐心......

4 个答案:

答案 0 :(得分:2)

您可以使用相同的solution found in this answer

string ExtractString(string s, string tag) {
     // You should check for errors in real-world code, omitted for brevity
     var startTag = "[" + tag + "]";
     int startIndex = s.IndexOf(startTag) + startTag.Length;
     int endIndex = s.IndexOf("[/" + tag + "]", startIndex);
     return s.Substring(startIndex, endIndex - startIndex);
}

答案 1 :(得分:1)

int start = foo.IndexOf("[sql]") + 5;

var sql = foo.SubString(start, foo.IndexOf("[/sql]") - start - 5);

答案 2 :(得分:0)

如果只有一个出现,你可以使用常见的字符串运算符:

string str = File.ReadAllText(@"c:\test.txt");

int start = str.IndexOf("[sql]");
int end = str.IndexOf("[/sql]");
string sql = str.Substring(start + 5, end - start - 5);

答案 3 :(得分:0)

一个老问题,但这通常会出现在关于搜索分隔字符串的Google查询中。

我找到了一个很好的解决方案

Regex: C# extract text within double quotes

在" Bart""回答。

这是基于Linq的解决方案。您使用分隔符作为拆分字符拆分字符串。然后你保留所有奇数条目。

var stringArray = str.Split('"').Where((item, index) => index % 2 != 0);

就我而言,我一直在寻找以美元符号划分的字符串,' $'。示例:$ WantThisString $。像冠军一样工作。谢谢巴特!