灿小视频 发表于 2024-7-14 22:13:57

哪个方法可以统计出某词语在一段文本中出现的次数

寻找文本只能找到第一个的位置,如何找到总共出现多少次

承易 发表于 2024-7-14 22:48:42

#include <stdio.h>
#include <string.h>
#include <ctype.h>

// 函数声明
int countWord(const char *text, const char *word);

int main() {
    char text; // 假设文本最大长度为 1000 个字符
    char word;   // 假设词语最大长度为 50 个字符

    printf("请输入一段文本(按回车结束):\n");
    fgets(text, sizeof(text), stdin);

    printf("请输入要统计的词语:\n");
    fgets(word, sizeof(word), stdin);

    // 将文本和词语转换为小写
    for (int i = 0; text != '\0'; i++) {
      text = tolower(text);
    }

    for (int i = 0; word != '\0'; i++) {
      word = tolower(word);
    }

    // 调用函数统计词语出现次数
    int count = countWord(text, word);

    printf("词语 \"%s\" 在文本中出现的次数是:%d\n", word, count);

    return 0;
}

// 函数实现
int countWord(const char *text, const char *word) {
    int count = 0;
    int wordLength = strlen(word);

    while (*text) {
      // 跳过前导空白字符
      while (*text == ' ' || *text == '\t' || *text == '\n') {
            text++;
      }

      // 检查是否找到了整个词语
      if (strncmp(text, word, wordLength) == 0) {
            count++;

            // 跳过整个词语
            text += wordLength;
      } else {
            // 跳过一个单词的长度
            text++;
      }
    }

    return count;
}

hcwanz 发表于 2024-7-14 22:59:36

承易 发表于 2024-7-14 22:48
#include
#include
#include


人问的是安卓

hcwanz 发表于 2024-7-14 23:00:07

不断的基于现有位置+1找就行,直到返回-1

灿小视频 发表于 2024-7-14 23:03:30

承易 发表于 2024-7-14 22:48
#include
#include
#include


看这架势,不断循环查找就是了,我还以为有一两个方法就能搞定了

灿小视频 发表于 2024-7-14 23:04:07

hcwanz 发表于 2024-7-14 23:00
不断的基于现有位置+1找就行,直到返回-1

循环查找就是了

创世魂 发表于 2024-7-14 23:08:40

就是循环查找啊,没别的办法。

承易 发表于 2024-7-15 08:42:27

public class TextCount {
    public static void main(String[] args) {
      String mainText = "这是一个示例文本,示例文本将用于统计某个特定文本的出现次数。请看示例文本。";
      String searchText = "示例文本";

      // 使用split方法计算searchText在mainText中出现的次数
      // 注意:split方法会根据提供的正则表达式分割字符串,并返回一个数组
      // 这里使用searchText作为正则表达式,并且添加了Pattern.LITERAL标志
      // Pattern.LITERAL标志意味着特殊字符将被视为普通字符,不使用正则表达式
      int count = mainText.split(Pattern.quote(searchText), -1).length - 1;

      // 输出结果
      System.out.println("The text \"" + searchText + "\" appears " + count + " times.");
    }
}


不会封装到火山,这个得其他人封装了

承易 发表于 2024-7-15 08:48:38



import java.util.regex.Pattern;

public class TextCounter {
   
    /**
   * 统计searchText在mainText中出现的次数。
   *
   * @param mainText   原文本
   * @param searchText 要查找的文本
   * @return 出现次数
   */
    public static int countOccurrences(String mainText, String searchText) {
      if (searchText == null || searchText.isEmpty()) {
            return 0;
      }
      
      // 使用Pattern.quote来避免searchText中的正则表达式特殊字符
      return mainText.split(Pattern.quote(searchText), -1).length - 1;
    }

    public static void main(String[] args) {
      String mainText = "这是一个示例文本,示例文本将用于统计某个特定文本的出现次数。请看示例文本。";
      String searchText = "示例文本";
      
      // 调用方法并获取出现次数
      int count = countOccurrences(mainText, searchText);
      
      // 输出结果
      System.out.println("The text \"" + searchText + "\" appears " + count + " times.");
    }
}


// 调用方法并获取出现次数
int count = countOccurrences(mainText, searchText);
作成参数了 原文,要找的文本,返回出现的次数,


然而不会在火山中调用JAVA代码,也不会调用JAR包,
尝试了下 依然不会封装,没入门

承易 发表于 2024-7-15 08:53:48

无奈官方人力不够,而生态暂时又不强大,会封装的没时间,想封装的又不会,而封装的说明文档有门槛 不适合新手,易语言到火山的跨越 我觉的有点大,当然这是大势所趋,可是用户无法适应,火山是一个新的语言 得重新学,易的东西过来只是一部分,还要增加一定的学习成本,而易语言现在依然活跃,所以很多人暂时不转行火山,没人就没江湖,就没人造轮子 没人搞技术 发动不了江湖的力量
页: [1] 2
查看完整版本: 哪个方法可以统计出某词语在一段文本中出现的次数