C#。解析并找到字符串中的某个单词

| 我有一些线
   bla bla bla bla  <I NEED THIS TEXT> 
<>
中获取文本的最佳和最快方法是什么?     
已邀请:
        
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;
    
        
int start = s.IndexOf(\"<\") + 1;
int end = s.IndexOf(\">\",start);

string text = s.Substring(start,end - start);
    
        将
Substring
与索引
<
>
一起使用,该索引由
IndexOf
获得。     
        
var s = \"bla bla bla bla  <I NEED THIS TEXT> \";
Console.WriteLine(s.Substring(s.IndexOf(\'<\') + 1, s.IndexOf(\'>\') - s.IndexOf(\'<\') - 1));
    
        
Regex.Match(input, \"<(.*)>\").Groups[1].Value
    
        会有嵌套吗?上面的两个答案将给出不同的结果:
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();
}
    
        没有正则表达式,并进行各种检查:
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);
}
    
        使用string.SubString和IndexOf mwthods仅在\“ <\”和\“> \”是所需文本的开头和结尾时才有效。如果这些字符恰好包含在实际文本开始之前,那么您将不会获得正确的字符串。 最好的办法是使用正则表达式。     
        
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;
}
    

要回复问题请先登录注册