news 2026/4/23 11:07:12

字符串处理小写字母转换大写字母

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
字符串处理小写字母转换大写字母

我来为你提供 Python、C++、Rust 的实现:

Python 实现

defprocess_string(s:str)->tuple[str,int]:""" 将字符串中的小写字母转换为大写,并统计小写字母个数 Args: s: 输入字符串 Returns: tuple[转换后的字符串, 小写字母个数] """lowercase_count=0result_chars=[]forchins:if'a'<=ch<='z':result_chars.append(chr(ord(ch)-32))# 小写转大写lowercase_count+=1else:result_chars.append(ch)# 其他字符保持不变return''.join(result_chars),lowercase_count# 更简洁的 Pythonic 写法defprocess_string_pythonic(s:str)->tuple[str,int]:lowercase_count=sum(1forchinsif'a'<=ch<='z')result=''.join(ch.upper()if'a'<=ch<='z'elsechforchins)returnresult,lowercase_count# 测试if__name__=="__main__":text="Hello World! 123"result,count=process_string(text)print(f"输入:{text}")print(f"输出:{result}")print(f"小写字母数:{count}")

C++ 实现

#include<iostream>#include<string>#include<cctype>// 用于 islower 和 toupper#include<utility>// 用于 pairstd::pair<std::string,int>processString(conststd::string&input){std::string result;intlowercaseCount=0;// 预分配空间,提高效率result.reserve(input.length());for(charch:input){if(islower(ch)){result.push_back(toupper(ch));// 小写转大写++lowercaseCount;}else{result.push_back(ch);// 其他字符保持不变}}return{result,lowercaseCount};}// 使用传统指针的 C 风格实现voidprocessStringCstyle(constchar*input,char*output,int*lowercaseCount){*lowercaseCount=0;for(inti=0;input[i]!='\0';++i){charch=input[i];if(ch>='a'&&ch<='z'){output[i]=ch-32;// 小写转大写++(*lowercaseCount);}else{output[i]=ch;}}output[strlen(input)]='\0';// 字符串结束符}// 测试intmain(){std::string text="Hello World! 123";auto[result,count]=processString(text);std::cout<<"输入: "<<text<<std::endl;std::cout<<"输出: "<<result<<std::endl;std::cout<<"小写字母数: "<<count<<std::endl;return0;}

Rust 实现

fnprocess_string(s:&str)->(String,usize){letmutresult=String::with_capacity(s.len());letmutlowercase_count=0;forchins.chars(){ifch.is_ascii_lowercase(){// 小写字母转大写result.push(ch.to_ascii_uppercase());lowercase_count+=1;}else{// 其他字符保持不变result.push(ch);}}(result,lowercase_count)}// 更函数式的 Rust 实现fnprocess_string_functional(s:&str)->(String,usize){letlowercase_count=s.chars().filter(|c|c.is_ascii_lowercase()).count();letresult=s.chars().map(|c|{ifc.is_ascii_lowercase(){c.to_ascii_uppercase()}else{c}}).collect();(result,lowercase_count)}// 测试fnmain(){lettext="Hello World! 123";let(result,count)=process_string(text);println!("输入: {}",text);println!("输出: {}",result);println!("小写字母数: {}",count);}// 单元测试#[cfg(test)]modtests{usesuper::*;#[test]fntest_process_string(){assert_eq!(process_string("Hello"),("HELLO".to_string(),4));assert_eq!(process_string("123"),("123".to_string(),0));assert_eq!(process_string("aBcDeF"),("ABCDEF".to_string(),3));assert_eq!(process_string(""),("".to_string(),0));}}

各语言特点对比

特性 Python C++ Rust
字符串类型 不可变 Unicode std::string(可变) String(可变),&str(不可变切片)
内存管理 自动垃圾回收 手动/RAII 所有权系统
函数返回 元组 (str, int) pair<string, int> 元组 (String, usize)
字符处理 内置方法 .upper() 标准库函数 toupper() 方法 .to_ascii_uppercase()
空安全 运行时检查 无(可能空指针) 编译时保证(Option类型)
性能特点 简洁但较慢 高效,接近硬件 零成本抽象,内存安全

运行示例

输入: "Hello World! 123" 输出: "HELLO WORLD! 123" 小写字母数: 8

解释:

· “Hello World!” 中有 8 个小写字母(e,l,l,o,o,r,l,d)
· 数字和标点符号保持不变
· 原本的大写字母 H、W 保持不变

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/17 18:42:09

群晖引导工具选择困境:从技术小白到专业玩家的完整指南

群晖引导工具选择困境&#xff1a;从技术小白到专业玩家的完整指南 【免费下载链接】rr Redpill Recovery (arpl-i18n) 项目地址: https://gitcode.com/gh_mirrors/rr2/rr 你是否曾经面对这样的场景&#xff1a;精心挑选的NAS硬件已就位&#xff0c;却卡在引导系统这一步…

作者头像 李华
网站建设 2026/4/12 10:10:03

好写作AI:硕士生狂喜!2小时“肝”出文献综述初稿的“魔法”是真的

凌晨两点&#xff0c;望着空白的文档和PDF堆积如山的文献文件夹&#xff0c;硕士生小李感觉自己的文献综述就像一座永远无法逾越的高山。直到他尝试了一种全新的“打法”……如果你也曾在文献综述的“苦海”里挣扎——面对数百篇文献不知从何读起&#xff0c;读完后思路混乱难以…

作者头像 李华
网站建设 2026/4/18 13:34:48

14、邮件系统的插件使用与安全配置指南

邮件系统的插件使用与安全配置指南 在当今数字化的时代,邮件系统成为了人们日常工作和生活中不可或缺的一部分。无论是个人用户还是企业用户,都依赖邮件系统进行信息交流和业务沟通。本文将围绕SquirrelMail邮件系统的插件使用以及邮件服务器的安全配置展开详细介绍。 1. S…

作者头像 李华
网站建设 2026/4/20 11:35:47

解锁Obsidian颜值新境界:AnuPpuccin主题深度体验指南

解锁Obsidian颜值新境界&#xff1a;AnuPpuccin主题深度体验指南 【免费下载链接】AnuPpuccin Personal theme for Obsidian 项目地址: https://gitcode.com/gh_mirrors/an/AnuPpuccin 还在为Obsidian单调的界面而苦恼吗&#xff1f;AnuPpuccin主题或许就是你一直在寻找…

作者头像 李华
网站建设 2026/4/23 9:20:29

开放学术检索与下载工具

一、国外学术检索工具&#xff08;支持高级检索与英文资源&#xff09; ‌Google Scholar‌ 提供全面的高级检索选项&#xff0c;可设置关键词、标题、作者、出版物、年份及摘要过滤&#xff0c;覆盖全球学术期刊、会议论文和书籍。支持直接下载开放获取文献或通过DOI链接到其他…

作者头像 李华
网站建设 2026/4/23 9:17:06

21、在 Linux 系统中运行 Windows 程序及软件管理全攻略

在 Linux 系统中运行 Windows 程序及软件管理全攻略 在 Linux 系统下运行 Windows 程序时,你有商业和免费两种选择,商业选项更为丰富。下面为你详细介绍这些选择。 商业软件 如今,越来越多的商业工具能让你在 Linux 系统中运行从 Microsoft Office 到 Windows 游戏等各类…

作者头像 李华