我有一个这样的字符串:
来自维基百科的这句话 - 这是一般性介绍 访问维基百科。该项目还有一篇百科全书文章 关于它自己,维基百科,以及一些有抱负的介绍 贡献者。有关如何捐赠给组织的信息 运行维基百科,请参阅给予的方式。 @ ## @这句话来自 谷歌 - 这是维基百科访问者的一般介绍。该 项目还有一篇关于自己,维基百科和。的百科全书文章 一些有抱负的贡献者的介绍。有关如何的信息 捐赠给运行维基百科的组织,请参阅给予的方式。 @ ## @这句话来自Facebook--这是一般性的介绍 对于维基百科的访问者。该项目还有一本百科全书 关于自己的文章,维基百科,以及一些有抱负的介绍 贡献者。有关如何捐赠给组织的信息 运行维基百科,请参阅给予的方式。 @ ## @
现在从字符串上面我想计算模式“@ ## @”的出现次数。 在此之后我想要子串直到字符串中第二次出现这种模式。
所以在上面的例子中我想要的结果是:
Count = 3 substring =“这是来自维基百科的句子 - 这是一个 维基百科访客的一般介绍。该项目也有 关于自身,维基百科等的百科全书文章 有抱负的贡献者的介绍。有关如何使用的信息 捐赠给运行维基百科的组织,请参阅给予的方式。 @ ## @ 这句话来自谷歌 - 这是一般性的介绍 访问维基百科。该项目还有一篇百科全书文章 关于它自己,维基百科,以及一些有抱负的介绍 贡献者。有关如何捐赠给组织的信息 运行维基百科,请参阅给予的方式。“
任何人都可以建议我怎么做这个。提前谢谢。
答案 0 :(得分:3)
试试这个:
var splitted = text.Split(new[]{"@##@"}, StringSplitOptions.RemoveEmptyEntries);
var count = splitted.Count();
var result = string.Join("@##@", splitted.Take(2).ToArray());
count将包含3,结果将包含您想要的字符串
答案 1 :(得分:0)
您想使用Split
方法。
public static Regex regex = new Regex(
"@##@",
RegexOptions.IgnoreCase
| RegexOptions.CultureInvariant
| RegexOptions.Compiled
);
string[] results = regex.Split(InputText);
答案 2 :(得分:0)
s = "... wikipedia string ...";
// define n, you probably have a dynamic n or one that's defined elsewhere...
n=2;
// split the string only n times
string[] parts = s.Split(new string[] {"@##@"}, n, StringSplitOptions.None);
// show splits (use them however you want)
System.Show(parts);
答案 3 :(得分:0)
Split
方法的替代方法,对大字符串更有效:
public static class StringExtensions
{
public static IEnumerable<int> AllIndexesOf(this string source, string substring)
{
int index = -1;
while ((index = source.IndexOf(substring, index + 1)) >= 0)
yield return index;
}
}
然后你可以这样称呼它:
int[] indexes = mystring.AllIndexesOf("@##@").ToArray();
int count = indexes.Length;
string substring = count > 0 ? mystring.Substring(0, indexes[0]) : mystring;