去除字符串中的空格(C语言)

//头文件
#include <stdio.h>
#include <stdlib.h>
//主函数
int main()
{
    //定义带空格的字符串
    char *p = "h e l l o";
    //打印字符串
    printf("%s\n", p);
    //定义足够长的数组,防止数据溢出
    char arr[100] = {0};
    //用指针接收字符串
    char *p1 = arr;
    //使用while循环取字符
    while (*p != '\0')
    {
        //判断字符是否为空格
        if (*p != ' ')
        {
            //把字符赋值给新的指针
            *p1 = *p;
            //指针地址加一个字符长度
            p1++;
        }
        //原指针加一个字符长度
        p++;
    }
    //打印新的字符串
    printf("%s\n", arr);
    //程序暂停
    system("pause");
    //程序正常退出
    return 0;
}

 

  • 7
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 题目:去除字符串空格并分解单词。 解答:可以使用字符串的 replace 和 split 方法来实现。先将字符串空格替换为空字符串,然后再通过 split 方法将单词拆分出来,得到一个单词列表。 ### 回答2: 对于去除字符串空格并分解单词这个问题,我们可以采用两种常用方法来解决。 一、使用split函数 我们可以使用字符串的split函数将字符串分割成单词,并去除单词之间的空格。split函数可以按照指定字符或字符串将原字符串分割成子字符串,并将子字符串存储在一个列表。在这个问题,我们可以使用空格作为分割符。 具体代码实现如下: ``` def split_words(s): words = s.split(' ') # 使用空格分割 return words ``` 上述函数会将输入的字符串s分割成单词,并存储在words列表。如果我们想要去除单词之间的空格,只需要在分割时将分隔符改为多个连续空格即可。代码实现如下: ``` def remove_spaces(s): words = s.split(' ') # 连续两个空格作为分隔符 return words ``` 二、使用正则表达式 正则表达式是一种用于匹配字符串的强大工具,我们可以使用正则表达式来匹配并替换字符串空格。具体代码实现如下: ``` import re def remove_spaces_regex(s): result = re.sub(r'\s+', ' ', s) # 匹配连续一个及以上的空格 words = result.split(' ') return words ``` 上述代码使用re模块的sub函数,匹配连续一个及以上的空格,并将其替换成单个空格。然后使用split函数将字符串分割成单词,并存储在words列表。 总结 本文介绍了两种常用的方法来解决“去除字符串空格并分解单词”的问题。第一种方法使用字符串的split函数进行分割,第二种方法使用正则表达式进行匹配和替换。在实际应用,我们可以根据具体情况来选择不同的方法。 ### 回答3: 为了去除字符串空格并分解单词,我们需要使用一些字符串操作的方法和技巧。以下是一些步骤和建议供参考: 1. 去除空格:使用trim()方法可以去掉字符串两端的空格,使字符串更加整洁。使用replace()方法可以将字符串所有的空格替换为空字符。 2. 分解单词:通过使用split()方法可以将字符串按照指定的字符或字符串进行切分,得到一个字符串数组。常用的分隔符有空格、逗号、分号、冒号等。在此题,根据需求,我们可以使用空格作为分隔符把单词拆分出来。 3. 去除无用符号:在分解单词的过程会出现一些符号,例如标点符号和特殊符号等,如果不需要这些符号,可以使用正则表达式或者判断函数isLetter()方法判断分隔出来的每个字符串是否是字母,只保留字母类型的字符串,得到剩下的单词。 4. 存储单词:将剩下的单词存储到数组、集合或者映射等数据结构,以便于后续的使用。可以使用ArrayList或HashMap等数据结构存储单词。 下面是具体的代码实现: ``` import java.util.ArrayList; public class Main { public static void main(String[] args) { String str = " This is a test! This is only a test. "; str = str.trim().replaceAll("\\s+", " "); ArrayList<String> list = new ArrayList<>(); for (String word : str.split(" ")) { if (word.matches("[a-zA-Z]+")) { list.add(word.toLowerCase()); } } System.out.println(list); } } ``` 以上是一种Java语言的实现方式,首先使用trim()方法去除两端的空格,使用replaceAll()方法将多个空格替换为一个空格;然后使用split()方法按照空格字符串拆分成单词组成的字符串数组,利用正则表达式过滤掉所有非字母类型的字符串,最后将符合条件的字符串存储到ArrayList,并统一转换成小写字母形式。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值