Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何计算一个字符串在一个大字符串中的出现次数,并在第n次出现之前获取子字符串?_C#_Regex_String - Fatal编程技术网

C# 如何计算一个字符串在一个大字符串中的出现次数,并在第n次出现之前获取子字符串?

C# 如何计算一个字符串在一个大字符串中的出现次数,并在第n次出现之前获取子字符串?,c#,regex,string,C#,Regex,String,我有这样一个字符串: 这是来自维基百科的一句话-这是对 维基百科的访问者。该项目还有一篇百科全书文章 关于它自己,维基百科,还有一些关于有抱负的人的介绍 贡献者。有关如何向组织捐款的信息 运行Wikipedia的网站,请查看给予的方式。@#这句话来自 谷歌-这是对维基百科访问者的一般介绍。这个 该项目也有一篇关于自身、维基百科和维基百科的百科全书文章 为有抱负的贡献者做一些介绍。了解如何 若要向运行维基百科的组织捐款,请参阅“捐款方式”。 @##@这句话来自Facebook——这是一个概括性的介

我有这样一个字符串:

这是来自维基百科的一句话-这是对 维基百科的访问者。该项目还有一篇百科全书文章 关于它自己,维基百科,还有一些关于有抱负的人的介绍 贡献者。有关如何向组织捐款的信息 运行Wikipedia的网站,请查看给予的方式。@#这句话来自 谷歌-这是对维基百科访问者的一般介绍。这个 该项目也有一篇关于自身、维基百科和维基百科的百科全书文章 为有抱负的贡献者做一些介绍。了解如何 若要向运行维基百科的组织捐款,请参阅“捐款方式”。 @##@这句话来自Facebook——这是一个概括性的介绍 对于维基百科的访问者。该项目还有一本百科全书 关于自己的文章,维基百科,以及一些有抱负的人的介绍 贡献者。有关如何向组织捐款的信息 运行Wikipedia的,请参阅提供方法@##@

现在从上面的字符串中,我想计算模式“@##@”的出现次数。 在这之后,我想要子字符串,直到这个模式在字符串中第二次出现

在上面的例子中,我想要的结果是:

Count=3 substring=“这是来自维基百科的一句话-这是一个 维基百科的一般介绍。该项目还包括 一篇关于它自己的百科全书文章,维基百科,还有一些 为有抱负的贡献者介绍。有关如何 向运行维基百科的组织捐款,请参阅捐款方式@##@ 这句话来自谷歌-这是对 维基百科的访问者。该项目还有一篇百科全书文章 关于它自己,维基百科,还有一些关于有抱负的人的介绍 捐款人。有关如何向组织捐款的信息 运行Wikipedia的网站,请参阅提供信息的方法。”


谁能告诉我怎么做。提前感谢。

您想使用
拆分方法

public static Regex regex = new Regex(
  "@##@",
RegexOptions.IgnoreCase
| RegexOptions.CultureInvariant
| RegexOptions.Compiled
);

string[] results = regex.Split(InputText);

您想使用
拆分
方法

public static Regex regex = new Regex(
  "@##@",
RegexOptions.IgnoreCase
| RegexOptions.CultureInvariant
| RegexOptions.Compiled
);

string[] results = regex.Split(InputText);

您想使用
拆分
方法

public static Regex regex = new Regex(
  "@##@",
RegexOptions.IgnoreCase
| RegexOptions.CultureInvariant
| RegexOptions.Compiled
);

string[] results = regex.Split(InputText);

您想使用
拆分
方法

public static Regex regex = new Regex(
  "@##@",
RegexOptions.IgnoreCase
| RegexOptions.CultureInvariant
| RegexOptions.Compiled
);

string[] results = regex.Split(InputText);
试试这个:

 var splitted = text.Split(new[]{"@##@"}, StringSplitOptions.RemoveEmptyEntries);
 var count = splitted.Count();
 var result = string.Join("@##@", splitted.Take(2).ToArray());
计数将包含3,结果将包含所需的字符串

试试看

试试这个:

 var splitted = text.Split(new[]{"@##@"}, StringSplitOptions.RemoveEmptyEntries);
 var count = splitted.Count();
 var result = string.Join("@##@", splitted.Take(2).ToArray());
计数将包含3,结果将包含所需的字符串

试试看

试试这个:

 var splitted = text.Split(new[]{"@##@"}, StringSplitOptions.RemoveEmptyEntries);
 var count = splitted.Count();
 var result = string.Join("@##@", splitted.Take(2).ToArray());
计数将包含3,结果将包含所需的字符串

试试看

试试这个:

 var splitted = text.Split(new[]{"@##@"}, StringSplitOptions.RemoveEmptyEntries);
 var count = splitted.Count();
 var result = string.Join("@##@", splitted.Take(2).ToArray());
计数将包含3,结果将包含所需的字符串


试试它

一种对大字符串更有效的
拆分
方法的替代方法:

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;
    }
}

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;
    }
}

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;
    }
}

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;
    }
}