news 2026/6/23 7:55:30

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

作者头像

张小明

前端开发工程师

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/6/22 22:38:46

35、使用 Ansible 部署脚本化服务器环境

使用 Ansible 部署脚本化服务器环境 1. 运行 Playbook 若 /etc/ansible/ansible.cfg 文件已正确配置,用于处理主机认证,就可以使用 ansible-playbook 命令来运行 Playbook。默认情况下,该命令会使用 /etc/ansible/hosts 中列出的主机,但也可以使用 -i 参数指定其…

作者头像 李华
网站建设 2026/6/23 19:51:12

13、文件操作与命令全解析

文件操作与命令全解析 在日常的文件操作中,我们会用到各种各样的命令和工具,它们各有特点和用途。下面将详细介绍一些常见的文件操作命令及其使用方法。 1. 基本文件读取与操作 head 命令 :默认情况下, head 命令会打印命令行中每个文件的前 10 行,如果没有指定文件…

作者头像 李华
网站建设 2026/6/23 4:38:52

终极修复指南:彻底解决Atmosphere固件2168-0002启动错误

终极修复指南&#xff1a;彻底解决Atmosphere固件2168-0002启动错误 【免费下载链接】Atmosphere Atmosphre is a work-in-progress customized firmware for the Nintendo Switch. 项目地址: https://gitcode.com/GitHub_Trending/at/Atmosphere 如果你在使用Nintendo …

作者头像 李华
网站建设 2026/6/23 10:29:44

第一章——办公自动化之Word报告自动生成:解放双手,高效创作

在日常办公中&#xff0c;我们经常会面临重复撰写格式相似的Word报告的任务。比如&#xff0c;每月的项目进度报告、销售业绩汇报等&#xff0c;这些报告往往只是数据和细节有所不同&#xff0c;但整体格式和框架基本一致。手动撰写不仅耗费大量时间和精力&#xff0c;还容易出…

作者头像 李华
网站建设 2026/6/23 11:35:06

压电材料的d33(纵向压电应变常数)测试流程及影响因素

压电材料的d33&#xff08;纵向压电应变常数&#xff09;是衡量其机电耦合性能的核心指标。传统的静态测试虽然简单&#xff0c;但往往无法反映材料在实际振动或高频工作环境下的真实表现。动态力测试&#xff08;Dynamic Force Testing&#xff09;通过施加交变应力并测量响应…

作者头像 李华