递归火山软件开发平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 火山 源码 类库
查看: 2281|回复: 12
打印 上一主题 下一主题

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

[复制链接]

54

主题

116

帖子

541

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
541
跳转到指定楼层
楼主
发表于 2024-7-14 22:13:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
寻找文本只能找到第一个的位置,如何找到总共出现多少次
回复

使用道具 举报

36

主题

444

帖子

1550

积分

金牌会员

Rank: 6Rank: 6

积分
1550
QQ
沙发
发表于 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]; // 假设文本最大长度为 1000 个字符
    char word[50];   // 假设词语最大长度为 50 个字符

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

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

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

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

    // 调用函数统计词语出现次数
    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;
}
Q 75520266
回复

使用道具 举报

69

主题

989

帖子

4464

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
4464
板凳
发表于 2024-7-14 22:59:36 | 只看该作者
承易 发表于 2024-7-14 22:48
#include
#include
#include

人问的是安卓
回复

使用道具 举报

69

主题

989

帖子

4464

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
4464
地板
发表于 2024-7-14 23:00:07 | 只看该作者
不断的基于现有位置+1找就行,直到返回-1
回复

使用道具 举报

54

主题

116

帖子

541

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
541
5#
 楼主| 发表于 2024-7-14 23:03:30 | 只看该作者
承易 发表于 2024-7-14 22:48
#include
#include
#include

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

使用道具 举报

54

主题

116

帖子

541

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
541
6#
 楼主| 发表于 2024-7-14 23:04:07 | 只看该作者
hcwanz 发表于 2024-7-14 23:00
不断的基于现有位置+1找就行,直到返回-1

循环查找就是了
回复

使用道具 举报

444

主题

1万

帖子

4万

积分

超级版主

Rank: 8Rank: 8

积分
40517
7#
发表于 2024-7-14 23:08:40 | 只看该作者
就是循环查找啊,没别的办法。
安卓无障碍实战课:点击查看
交流群:641526939
回复

使用道具 举报

36

主题

444

帖子

1550

积分

金牌会员

Rank: 6Rank: 6

积分
1550
QQ
8#
发表于 2024-7-15 08:42:27 | 只看该作者
  1. public class TextCount {
  2.     public static void main(String[] args) {
  3.         String mainText = "这是一个示例文本,示例文本将用于统计某个特定文本的出现次数。请看示例文本。";
  4.         String searchText = "示例文本";

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

  10.         // 输出结果
  11.         System.out.println("The text "" + searchText + "" appears " + count + " times.");
  12.     }
  13. }
复制代码


不会封装到火山,这个得其他人封装了
Q 75520266
回复

使用道具 举报

36

主题

444

帖子

1550

积分

金牌会员

Rank: 6Rank: 6

积分
1550
QQ
9#
发表于 2024-7-15 08:48:38 | 只看该作者


  1. import java.util.regex.Pattern;

  2. public class TextCounter {
  3.    
  4.     /**
  5.      * 统计searchText在mainText中出现的次数。
  6.      *
  7.      * @param mainText   原文本
  8.      * @param searchText 要查找的文本
  9.      * @return 出现次数
  10.      */
  11.     public static int countOccurrences(String mainText, String searchText) {
  12.         if (searchText == null || searchText.isEmpty()) {
  13.             return 0;
  14.         }
  15.         
  16.         // 使用Pattern.quote来避免searchText中的正则表达式特殊字符
  17.         return mainText.split(Pattern.quote(searchText), -1).length - 1;
  18.     }

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


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


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

使用道具 举报

36

主题

444

帖子

1550

积分

金牌会员

Rank: 6Rank: 6

积分
1550
QQ
10#
发表于 2024-7-15 08:53:48 | 只看该作者
无奈官方人力不够,而生态暂时又不强大,会封装的没时间,想封装的又不会,而封装的说明文档有门槛 不适合新手,易语言到火山的跨越 我觉的有点大,当然这是大势所趋,可是用户无法适应,火山是一个新的语言 得重新学,易的东西过来只是一部分,还要增加一定的学习成本,而易语言现在依然活跃,所以很多人暂时不转行火山,没人就没江湖,就没人造轮子 没人搞技术 发动不了江湖的力量
Q 75520266
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|递归火山软件开发平台 ( 鄂ICP备18029190号 )

GMT+8, 2024-11-23 05:34 , Processed in 0.094604 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表