有一段文本,将文本中的所有单词,存放到一个字符指针数组中(要求每个单词内存恰好)

    char str[] = "vaercly love iOS";//文本
    char temp[20] = "";
    char *p[3] = {0};//存储堆区的地址
    int num = 0;//单词总个数
    int j = 0;
    for (int i = 0; i < strlen(str) + 1; i++) {
        if (str[i] != ' ' || str[i] != '\0') {
            temp[j] = str[i];
            j++;
        }
        if (str[i] == ' ' || str[i] == '\0') {
            temp[j] = '\0';//将空格替换为'\0'
            p[num] = malloc(sizeof(temp));//动态分配内存空间,将具体的空间地址存储到对应的指针数组元素中
            strcpy(p[num], temp);//将单词拷贝到对应的堆区空间
            j = 0;
            num++;//单词个数加1
        }
    }
    for (int i = 0; i < num ; i++) {
        printf("%s\n", p[i]);//输出单词
        free(p[i]);
        p[i] = NULL;
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用正则表达式来匹配英文单词,然后将其保存在一个字符数组。以下是代码示例: ```java import java.util.regex.Matcher; import java.util.regex.Pattern; public class WordExtractor { public static void main(String[] args) { String text = "This is a sample text with some words."; String[] words = extractWords(text); for (String word : words) { System.out.println(word); } } public static String[] extractWords(String text) { Pattern pattern = Pattern.compile("[a-zA-Z]+"); Matcher matcher = pattern.matcher(text); String[] words = new String[100]; int i = 0; while (matcher.find()) { words[i++] = matcher.group(); } return words; } } ``` 在上面的示例,我们使用正则表达式 `[a-zA-Z]+` 来匹配所有由字母组成的单词。然后使用 `Matcher` 类的 `find()` 方法来逐个匹配所有出现的单词,并将其保存在一个字符数组。 ### 回答2: 要实现从一段英文文本提取出所有的英文单词并保存在一个字符数组里,可以使用Java的正则表达式来实现。下面是一个简单的示例代码: ```java import java.util.regex.*; public class WordExtractor { public static void main(String[] args) { String text = "This is a sample text for word extraction."; // 使用正则表达式匹配英文单词,并保存在字符数组 Pattern pattern = Pattern.compile("\\b[a-zA-Z]+\\b"); Matcher matcher = pattern.matcher(text); String[] words = new String[0]; while (matcher.find()) { words = addWord(words, matcher.group()); } // 输出所有提取到的英文单词 for (String word : words) { System.out.println(word); } } // 在字符数组末尾添加一个单词,并返回新的数组 private static String[] addWord(String[] array, String word) { String[] newArray = new String[array.length + 1]; System.arraycopy(array, 0, newArray, 0, array.length); newArray[array.length] = word; return newArray; } } ``` 在上述代码,我们使用了正则表达式 `\b[a-zA-Z]+\b` 来匹配英文单词。其 `\b` 表示单词的边界,`[a-zA-Z]` 表示大小写字母,`+` 表示匹配一个或多个字母。 通过循环遍历 Matcher 对象的 find() 方法,我们可以找到所有匹配的英文单词并保存在字符数组 words 。为了方便动态添加单词,我们使用了一个辅助方法 addWord(),每次在字符数组末尾添加一个新的单词,并返回新的数组。 最后,我们使用一个简单的循环输出数组 words 的所有单词。运行这段代码,将输出文本的所有英文单词: ``` This is a sample text for word extraction ``` ### 回答3: 要实现从一段英文文本提取出所有的英文单词并保存在一个字符数组里,可以使用Java的正则表达式和字符串处理方法来完成。下面是一个简单的示例代码: ```java import java.util.regex.Matcher; import java.util.regex.Pattern; public class WordExtractor { public static void main(String[] args) { String englishText = "I have a cat. It is cute."; // 使用正则表达式匹配英文单词 String regex = "\\b[A-Za-z]+\\b"; Pattern pattern = Pattern.compile(regex); Matcher matcher = pattern.matcher(englishText); // 将匹配到的英文单词保存在一个字符数组里 int count = 0; String[] words = new String[100]; // 假设最多有100个英文单词 while (matcher.find()) { words[count++] = matcher.group(); } // 打印提取到的英文单词 for (int i = 0; i < count; i++) { System.out.println(words[i]); } } } ``` 以上代码首先定义了一个英文文本字符串 `englishText`,然后使用正则表达式 `\b[A-Za-z]+\b` 来匹配英文单词。其 `\b` 表示单词的边界,`[A-Za-z]+` 表示一个或多个大小写字母。然后使用 `Pattern` 类的 `compile()` 方法将正则表达式编译成模式,再使用 `Matcher` 类的 `find()` 方法进行匹配。 匹配到的英文单词通过 `matcher.group()` 方法获取,然后保存在一个字符数组 `words` 。为了方便,这里假设最多有100个英文单词,可以根据实际情况调整数组大小。 最后,使用循环打印出提取到的英文单词。 请注意,以上示例代码只是一个简单的实现,可能无法处理一些特殊情况,比如连字符、缩写、带有标点符号的单词等。如果需要更严格的英文单词提取功能,可能需要更复杂的正则表达式或其他处理方式。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值