我有一些字符串
bla bla bla bla <I NEED THIS TEXT>
如何以最佳和最快的方式获取<>
内部的文本?
我有一些字符串
bla bla bla bla <I NEED THIS TEXT>
如何以最佳和最快的方式获取<>
内部的文本?
int start = s.IndexOf("<") + 1;
int end = s.IndexOf(">",start);
string text = s.Substring(start,end - start);
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 input = "bla bla bla bla <I NEED THIS TEXT> ";
var match = Regex.Match(input, @".*?<(?<MyGroup>.*?)>");
if (match.Success)
var text = match.Groups["MyGroup"].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);
}
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;
}
IndexOf
解决方案的问题在于文本中的“bla bla > bla bla <I NEED THIS TEXT>”文本。在这种情况下,结束位置小于起始位置。 - Aaaaaaaa