[字符串操作] 单词替换

这篇具有很好参考价值的文章主要介绍了[字符串操作] 单词替换。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

单词替换

题目描述

输入一个字符串,以回车结束(字符串长度<=100)。该字符串由若干个单词组成,单词之间用一个空格隔开,所有单词区分大小写。现需要将其中的某个单词替换成另一个单词,并输出替换之后的字符串。

关于输入

输入包括3行:
  第1行是包含多个单词的字符串 s
  第2行是待替换的单词 a (长度<=100)
  第3行是a将被替换的单词 b (长度<=100)
s, a, b 最前面和最后面都没有空格。

关于输出

输出只有 1 行:
  将s中所有单词a替换成b之后的字符串。
如果s中单词a没有出现,则将s原样输出。

例子输入
You want someone to help you
You
I
例子输出
I want someone to help you
提示信息

可以用 gets() 函数来输入带空格的字符串。

解题分析

一种方法是用strtok去不断地分割字符串,然后用strcat去连接字符串,最后输出结果,这样是可行的。

代码展示
#include <stdio.h>
#include <string.h>

#define MAX_LEN 101

int main() {
    char s[MAX_LEN], a[MAX_LEN], b[MAX_LEN];
    char temp[MAX_LEN], *token;
    char new_s[MAX_LEN * 10] = "";  // 用于保存新的字符串,假设新的字符串长度不超过原始字符串的10倍

    fgets(s, MAX_LEN, stdin);  // 输入字符串s
    fgets(a, MAX_LEN, stdin);  // 输入待替换的单词a
    fgets(b, MAX_LEN, stdin);  // 输入将替换的单词b

    // 去掉字符串末尾的换行符
    s[strlen(s)-1] = '\0';
    a[strlen(a)-1] = '\0';
    b[strlen(b)-1] = '\0';

    // 在字符串的开头和结尾添加空格
    sprintf(temp, " %s ", s);

    token = strtok(temp, " ");  // 分割字符串s
    while (token != NULL) {
        if (strcmp(token, a) == 0) {  // 如果当前单词是待替换的单词a
            strcat(new_s, b);  // 将单词b添加到新的字符串中
        } else {
            strcat(new_s, token);  // 将当前单词添加到新的字符串中
        }
        strcat(new_s, " ");  // 添加空格
        token = strtok(NULL, " ");  // 继续分割字符串s
        //printf("%s\n",new_s);
    }

    new_s[strlen(new_s)-1] = '\0';  // 去掉字符串末尾的空格
    printf("%s\n", new_s);  // 输出新的字符串

    return 0;
}

当然啦,也可以一个一个字符地去操作,这就比较精细了。文章来源地址https://www.toymoban.com/news/detail-765597.html

#include <iostream>
#include <cstring>
using namespace std;
char s[105]; char word1[105];
char word2[105];
int main(){
	fgets(s,sizeof(s),stdin);
	scanf("%s%s",word1,word2);
	int lens=strlen(s);
	int len1=strlen(word1);
	//int len2=strlen(word2);
	int flag=0;
	for(int i=0;i<lens-1;i++){
		if(strncmp(s+i,word1,len1)==0 && (i==0 || s[i-1]==' ') && (i+len1>=lens-1 || s[i+len1]==' ')){
			printf("%s",word2);
			i+=len1-1;
		}
		else{
			printf("%c",s[i]);
		}
	}
	if(flag=0){
	printf("%s",s);
	}
	return 0;
}

到了这里,关于[字符串操作] 单词替换的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 算法刷题-字符串-翻转字符串里的单词

    综合考察字符串操作的好题。 力扣题目链接 给定一个字符串,逐个翻转字符串中的每个单词。 示例 1: 输入: “the sky is blue” 输出: “blue is sky the” 示例 2: 输入: \\\" hello world! \\\" 输出: “world! hello” 解释: 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不

    2024年02月09日
    浏览(102)
  • 【JavaScript数据结构与算法】字符串类(反转字符串中的单词)

    个人简介 👀 个人主页: 前端杂货铺 🙋‍♂️ 学习方向: 主攻前端方向,也会涉及到服务端(Node.js) 📃 个人状态: 在校大学生一枚,已拿多个前端 offer(秋招) 🚀 未来打算: 为中国的工业软件事业效力 n 年 🥇 推荐学习:🍍前端面试宝典 🍉Vue2 🍋Vue3 🍓Vue2/3项目

    2023年04月09日
    浏览(91)
  • 数据结构与算法之字符串: Leetcode 557. 反转字符串中的单词 III (Typescript版)

    翻转字符串中的单词 III https://leetcode.cn/problems/reverse-words-in-a-string-iii/ 描述 给定一个字符串 s ,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。 示例 1: 示例 2: 提示: 1 = s.length = 5 * 1 0 4 10^4 1 0 4 s 包含可打印的 ASCII 字符。 s 不包含任何开头或

    2024年02月01日
    浏览(77)
  • Windows BAT批处理字符串相关操作(字符串定义、分割、拼接、替换、切片、查找)

    使用 set 来定义字符串 代码说明: 将字符串Hello赋值给string1的变量 使用 %string1%%string2% 的方式完成字符串的拼接。 代码说明: 用来连接字符串的字符串,如果包含了特殊字符则需要使用 ^ 转义,并且需要使用 \\\"\\\" 括起来,特殊字符包括(但不限于): 符号 作用 @ 命令行回显

    2024年02月12日
    浏览(45)
  • vue字符串替换,vue将字符串内指定字符替换,vue字符串替换函数.replace如何使用

    vue字符串替换,vue将字符串内指定字符替换,vue字符串替换函数.replace如何使用

    2024年02月11日
    浏览(55)
  • 算法竞赛字符串常用操作大全

    Bufferedreader bf=new BufferedReader(new InputStreamReader(System.in)); String s[]=bf.readLine().split(\\\" \\\") split(\\\" \\\") 表示 去掉 输入的串中的 空格 split(\\\"\\\") 表示 去掉 输入的串中的 根据题目要求, 想去什么符号就在 split(\\\"\\\") 引号中加什么。 常用输入转换: 以此题为例 👇 : 先读入n行字符串数组 再

    2024年02月16日
    浏览(49)
  • 【string题解 C++】字符串相乘 | 翻转字符串III:翻转单词

    目录 字符串相乘 题面 错误记录 Way1 拆分成“先乘后加” 思路 实现 时空复杂度分析 反思 Way2 用数组 思路 实现 时空复杂度分析 翻转字符串III:翻转字符串中的单词 题面 错误记录 思路1 遍历找单词 实现 思路2 暴力解法 实现 力扣(LeetCode)官网 - 全球极客挚爱的技术成长平

    2024年02月07日
    浏览(63)
  • 题目:1967.作为子字符串出现在单词中的字符串数组

    ​ 题目来源:         leetcode题目,网址:1967. 作为子字符串出现在单词中的字符串数目 - 力扣(LeetCode) 解题思路:         遍历字符串数组,根据 word.indexOf(pattern) 的返回值是否为 -1 判断改字符串是否为单词的字符串并对其计数即可。 解题代码: 总结:         官方

    2024年02月13日
    浏览(52)
  • C语言学习:输入一行字符串,输出字符串中最长的单词。

    输入一行字符,编写一个函数,将此字符串中最长的单词输出。 代码示例如下: 一、输出字符串中第一个最长单词 测试结果:  二、输出字符串中所有最长单词 评论区指出上述程序不能输出同样最长的两个单词,修改后该程序能输出所有最长单词,即如果有多个同样最长的

    2024年02月05日
    浏览(61)
  • java中读取用户输入的整数、字符、字符串、单词

    1、取用户输入的整数 如果你想从控制台读取整数,可以使用 .nextInt()方法:例如:  这段代码向用户询问输入一个数字,并使用 .nextInt() 方法读取该数字。该方法读取用户输入,并将其作为整数返回,然后存储在变量 number 中。 2、取用户输入的字符  如果你想从控制台读取

    2024年02月06日
    浏览(70)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包