c#。解析并查找字符串中的一些单词

c#。解析并查找字符串中的一些单词,c#,.net,string,string-parsing,C#,.net,String,String Parsing,我有一些绳子 bla bla bla bla <I NEED THIS TEXT> bla-bla-bla-bla 获取内部文本的最佳和最快方法是什么?与的索引一起使用,由获得。int start=s.IndexOf(“,start”); string text=s.Substring(开始,结束-开始); var input=“bla-bla-bla”; Match=Regex.Match(输入@“]*)>”; 如果(匹配成功) { //使用match.Groups[

我有一些绳子

   bla bla bla bla  <I NEED THIS TEXT> 
bla-bla-bla-bla
获取
内部文本的最佳和最快方法是什么?

的索引一起使用,由获得。

int start=s.IndexOf(“,start”);
string text=s.Substring(开始,结束-开始);
var input=“bla-bla-bla”;
Match=Regex.Match(输入@“]*)>”;
如果(匹配成功)
{
//使用match.Groups[1]值执行一些操作;
}
var input=“bla-bla-bla”;
var match=Regex.match(输入@“*?”;
如果(匹配成功)
var text=match.Groups[“MyGroup”].Value;
var s=“bla bla bla bla”;
Console.WriteLine(s.Substring(s.IndexOf(“”)-s.IndexOf(“
Regex.Match(input)”)。组[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);
}
var data=“bla bla bla bla”;
int start=0,end=0;
如果((start=data.IndexOf(“,start))>0)
{
var结果=data.Substring(start+1,end-start-1);
}

会有嵌套吗?上面的两个答案会给出不同的结果:

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();
}
static void Main()
{
字符串s=“hellogoodbay”;
字符串r=Regex.Match(“”)。组[1]。值;
int start=s.IndexOf(“,start”);
字符串t=s.Substring(开始,结束-开始);
控制台写入线(r);
控制台写入线(t);
Console.ReadKey();
}

使用string.SubString和IndexOf mMethods将只起作用,因为“”是所需文本的开头和结尾。如果这些字符恰好包含在实际文本开始之前,则无法获得正确的字符串


最好是使用正则表达式。

索引of
-解决方案的问题是“bla-bla>bla-bla”文本。在这种情况下end@CsillikDavid Janos:如果处理得当,则不会。这里的大多数示例都给出了如何实现目标的粗略想法,而不是涵盖所有可能的方面;可以假设OP会根据最适合的需求量身定制答案。有很多可能的方面,这就是为什么会有regexps@Csillik大卫·亚诺斯:正则表达式不存在吗o被滥用。没有必要为简单的任务使用如此昂贵的机制-曾经用大锤敲碎过坚果吗?-我不会放弃他们的位置,但他们不会一时兴起。这个关于regex的答案是第一次,我检查了它和它的工作情况。@Evgeny-谢谢你的信任。事实上,我没有发布我的答案,直到我检查它是working。有时发现有些人只是在没有解释的情况下否决了投票。而且,我注意到,每当提出有关解析的问题时,人们倾向于对非正则表达式的答案进行否决。@Csillik David Janos-如果你认为这是错误的,你可以在评论之前检查代码是否工作。首先,这是一个问题。但你是对的,它是正确的很好!
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;
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
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);
}
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();
}