0

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

假设我有一个名为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

4 回答 4

2

您可以使用此答案中的相同解决方案

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);
}
于 2012-07-03T14:20:21.503 回答
1
int start = foo.IndexOf("[sql]") + 5;

var sql = foo.SubString(start, foo.IndexOf("[/sql]") - start - 5);
于 2012-07-03T14:19:57.290 回答
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);
于 2012-07-03T14:22:10.480 回答
0

一个老问题,但这经常出现在关于搜索分隔字符串的 Google 查询中。我找到了一个很好的解决方案

正则表达式:C# 提取双引号内的文本

在“巴特的”答案中。

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

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

就我而言,我正在寻找由美元符号“$”分隔的字符串。示例:$WantThisString$。像冠军一样工作。谢谢巴特!

于 2017-09-11T14:46:00.853 回答