C#。解析并在字符串中找到一些单词

时间:2011-05-31 09:06:37

标签: c# .net string string-parsing

我有一些字符串

   bla bla bla bla  <I NEED THIS TEXT> 

<>内获取文字的最佳和最快捷方式是什么?

9 个答案:

答案 0 :(得分:6)

int start = s.IndexOf("<") + 1;
int end = s.IndexOf(">",start);

string text = s.Substring(start,end - start);

答案 1 :(得分:3)

Substring与[{3}}获得的<>索引一起使用。

答案 2 :(得分:3)

var s = "bla bla bla bla  <I NEED THIS TEXT> ";
Console.WriteLine(s.Substring(s.IndexOf('<') + 1, s.IndexOf('>') - s.IndexOf('<') - 1));

答案 3 :(得分:3)

Regex.Match(input, "<(.*)>").Groups[1].Value

答案 4 :(得分:2)

var input = "bla bla bla bla  <I NEED THIS TEXT> ";

var match = Regex.Match(input, @".*?<(?<MyGroup>.*?)>");
if (match.Success)
    var text = match.Groups["MyGroup"].Value;

答案 5 :(得分:2)

会有筑巢吗?上面的两个答案将给出不同的结果:

static void Main()
{
    string s = "hello<I NEED <I NEED THIS TEXT> THIS TEXT>goodbye";

    string r = Regex.Match(s, "<(.*)>").Groups[1].Value;

    int start = s.IndexOf("<") + 1;
    int end = s.IndexOf(">", start);
    string t = s.Substring(start, end - start);

    Console.WriteLine(r);
    Console.WriteLine(t);

    Console.ReadKey();
}

答案 6 :(得分:1)

没有正则表达式,并检查各种类型:

var data = "bla bla bla bla <I NEED THIS TEXT>";

int start = 0, end = 0;
if ((start = data .IndexOf("<")) > 0 &&
    (end = data .IndexOf(">", start)) > 0)
{
    var result = data .Substring(start + 1, end - start - 1);
}

答案 7 :(得分:1)

使用string.SubString和IndexOf mwthods只能工作“&lt;”和“&gt;”是您想要的文本的开头和结尾。如果在实际文本开始之前碰巧包含这些字符,那么您将无法获得正确的字符串。

最好的方法是使用正则表达式。

答案 8 :(得分:0)

var input = "bla bla bla bla  <I NEED THIS TEXT>";
Match match = Regex.Match(input, @"<([^>]*)>");
if (match.Success)
{
    // Do some with match.Groups[1].Value;
}