【问题标题】:Display next set of words in a string显示字符串中的下一组单词
【发布时间】:2012-05-23 05:09:51
【问题描述】:

我有以下代码:

 int numberOfWords = 50;

 string regexMatch = string.Format(@"^(\w+\b.*?){{" + numberOfWords + "}}");
 string firstWords = Regex.Match(result, regexMatch).Value;

此代码显示字符串中的前 50 个单词。现在我想显示接下来的 50 个单词(第 51 个单词到第 100 个单词)。我该怎么做?

【问题讨论】:

  • 下一个 50 是什么意思?您可以创建像“counter”这样的新变量并将其放入一个循环中,然后将 numberOfWords * counter 相乘(第一次 coner 为 1,下一轮为 2,依此类推.... ... { + numberOfWords * coner + "} ...
  • 如果您的问题得到解决,请接受答案!

标签: c# asp.net regex string string.format


【解决方案1】:

您可以使用相同的正则表达式,但从前 5o 个单词开始。由于您在 firstWords 中有前 50 个单词,所以我们必须在这 50 个单词之后开始。因此,我们将在 firstWords 中的 50 个单词之后获取结果的子字符串。 firstWords.Length 将成为第二个 5o 单词的正则表达式的新起点。

 string secondWords = Regex.Match(result.Substring(firstWords.Length).Trim(), regexMatch).Value;

【讨论】:

  • 字符串 secondWords 的值为空。可能是什么原因?
  • 我检查了问题是我们在前五十个单词后留下的字符串开头的空格字符。通过语句 result.Substring(firstWords.Length) 现在我删除了那个空间并且它正在工作。
【解决方案2】:

如果要匹配多个strings,

这样的代码:

List<string> Words = new List<string>();
for(int i = 0; (result.Length - (i * numberOfWords)) < numberOfWords; i++)
{
    Words.Add(Regex.Match(result.Substring(i * numberOfWords).Trim(), regexMatch).Value)
}

您将获得字符串中存在的 50 个单词的列表!但是,如果 string 的末尾少于 50 个单词,则不会将这些单词添加到 Words 列表中。

【讨论】:

    猜你喜欢
    • 2020-10-18
    • 1970-01-01
    • 2012-09-09
    • 2017-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-29
    相关资源
    最近更新 更多