String类常用方法(补充)

本文介绍了 Java 中 String 类的常用方法,包括字符替换、去除空格、字符串比较等,并通过实例展示了如何实现字符串首字母小写转换及字符串反转。

一.String类的方法

1.替换功能:

1).public String replace(char oldChar,char newChar):将字符串中某一个字符用新的字符替换
2).public String replace(String oldStr,String newStr):将字符串中某一个子字符串用新 的字符

2.去除字符串两端空格:

public String trim()

3.两个字符串进行比较:

public int compareTo(String anotherString)  是Comparable接口中的方法(该接口可以实现一个自然排序) Comparator接口可以比较器排序
package day_11_10_29.string01;

public class StringTest7 {
	public static void main(String[] args) {
		// 定义字符串
		String s1 = "helloworld";
		/**
		 * 1.public String replace(char oldChar,char newChar)
		 * 单替换功能:将字符串中某一个字符用新的字符替换
		 */
		String r = s1.replace('e', 'a');
		System.out.println("r:"+r);
		System.out.println("-----------------");
		
		/**
		 * 2.public String replace(String oldStr,String newStr)
		 * 全部替换:将字符串中某一个子字符串用新 的字符串去替代
		 * */
		String r1 = s1.replace("ell", "ass");
		System.out.println("r1:"+r1);
		System.out.println("-----------------");
		
		/**
		 * 3. public String trim();
		 * 删除两端空格
		 * */
		String s2 = " hello world " ;
		System.out.println("s2:"+"----"+s2+"----");
		String s3 = s2.trim();
		System.out.println("s3:"+"----"+s3+"----");
		
		/**
		 * 4. public int compareTo(String anotherString)
		 * 两个字符串进行比较:
		 * */
		/**
         * 遇到:看源码:comparTo()的源码(用在哪呢?)
         * 对源码解释:
         *   1)先得出两个字符串长度较小的长度m
         *   2)从二者第一个字符开始比较,如果相等比较下一个字符,直到不同,输出对应字符ASCII码表的差值
         *   3)如果字符串遍历到m的地方,则结束此时输出的是两个字符串长度的差值
         */
		String s4 = "hello world";
		String s5 = "hel";
		String s6 = "hf";
		int a = s4.compareTo(s5);
		System.out.println("a="+a);//8 输出的是两个字符串长度的差值
		System.out.println("-----------------");
		int b = s6.compareTo(s4);
		System.out.println("b="+b);//1 输出对应字符ASCII码表的差值
		
	}

}

练习:键盘录入一个字符串,将该字符串的第一个字母转换成小写,其余的字母字符转换成大写(不考虑其他的字母字符)
分析:1.创建键盘录入对象,录入一个字符串
2.截取:substring(int begin,int end)
3.将上面获取的字符串转换小写
4.在截取刚才录入的这个字符串,substring(int begin):从指定位置截取到末尾,返回一个新的字符串
5.将的得到新的字符串---->转换大写
6.将3和5,使用concat()拼接:字符串拼接方法
package day_11_10_29.string01;

import java.util.Scanner;

/**
 * 需求:键盘录入一个字符串,将该字符串的第一个字母转换成小写,其余的字母字符转换成大写(不考虑其他的字母字符)
 * */
public class StringTest4 {

	public static void main(String[] args) {
		
		//创建键盘录入对象
		Scanner sc = new Scanner(System.in);
		//录入并接收数据
		System.out.println("请输入字符串:");
		String s = sc.nextLine();
		
		//截取接收到的字符串的第一个字符
		String s1 = s.substring(0,1);
		
		//将第一个字母转化成小写
		String s2 = s1.toLowerCase();
		
		//截取s中的其他字母
		String s3 = s.substring(1);
		
		//将其余字母转换成大写
		String s4 = s3.toUpperCase();
		
		//将s2和s4拼接
		String result = s2.concat(s4);
		System.out.println(result);
	}

}

练习:键盘录入一个字符串,将字符串进行反转
分析:1.创建键盘录入对象,录入并接收一个字符串
  2.定义空字符串
  3.可以将字符串转换成字符数组:toCharArray();
  4.遍历字符数组,倒着遍历.
  5.遍历之后获取到字符串中的每一个字符,然后使用空串进行拼接
package day_11_10_29.string01;

import java.util.Scanner;

/**
 *  需求:键盘录入一个字符串,将字符串进行反转
 * */
public class StringTest5 {
	public static void main(String [] args){
		//创建键盘录入对象
		Scanner sc = new Scanner(System.in);
		//录入并接收数据
		System.out.println("请输入字符串:");
		String s = sc.nextLine();
		String result = myReverse(s);  //
		System.out.println(result);
	}
	
	public static String myReverse(String s){
		//定义一个空字符串
		String result = "";
		//将字符串转换成字符数组
		char[] ch = s.toCharArray();
		//倒序遍历字符数组
		for(int i=ch.length-1;i>=0;i--){
			//拼接每一个字符
			result+=ch[i];
		}
		return result;
		
	} 
}

 
<think>好的,我现在需要处理用户关于C++ string常用方法总结的查询。首先,用户可能已经看过一些资料,比如他们提到的引用[1]和引用[2],里面提到了operator[]、at()、size()方法,以及cin和getline的问题。我需要确保覆盖这些内容,同时补充其他常用方法。 首先,我得回忆C++ string的主要方法常用的大概包括构造函数、赋值操作、字符串连接、访问字符([]和at)、容量相关如size、length、empty、clear,修改字符串如append、insert、erase、replace,查找如find、substr,比较操作compare,子串substr,输入输出如getline,还有型转换如c_str、stoi等。 用户提到的operator[]和at()已经在引用[1]中出现,但需要详细说明它们的区别,比如越界时的行为。另外,size()和length()通常是一样的,但可能用户会混淆,需要指出它们的区别。empty()和clear()也是基础,必须包含。 然后,字符串连接可以用+或append,但需要举例说明。insert和erase在修改字符串时很常用,应该给出例子。replace可能用于替换部分字符串,比如替换特定子串的位置。 查找方法如find和rfind,以及substr提取子串,这些对处理字符串很重要。比较操作compare和直接用运算符的区别可能需要说明。输入输出方面,用户提到了getline和cin的问题,引用[2]中的情况需要解释清楚,避免残留的换行符影响。 型转换方面,c_str()用于和C字符串交互,stoi、stol等转换函数也很实用。可能还需要提到C++11引入的stof、stod等。 此外,可能需要提醒用户关于字符串的迭代器用法,比如begin()和end(),但可能用户更关注直接的方法而不是STL特性。还有reserve和capacity用于预分配内存,优化性能,但属于进阶内容,是否包含要看用户的需求。 需要检查是否有遗漏的重要方法,比如assign、compare、swap等。assign可以用于赋值,但通常operator=更常用。swap可以交换两个字符串的内容,可能在特定情况下有用。 然后,组织这些内容,按照功能分,比如构造与赋值、访问元素、容量操作、修改操作、查找与子串、输入输出、型转换等。每个别下列举方法,给出示例代码,并注意语法正确性,使用中文注释。 用户可能还关心性能问题,比如operator[]和at()的性能差异,或者append和+=的效率。但如果没有相关资料,可能不需要深入,除非有明确的引用支持。 还需要注意用户提到的引用内容,引用[1]中提到了operator[]和at(),以及size(),引用[2]提到getline和cin的问题,因此在回答中需要适当引用这些内容,比如在讨论getline时引用[2],在讨论字符访问时引用[1]。 最后,生成相关问题,可能涉及字符串操作的其他方法,性能优化,常见错误(如越界),或者与其他数据型的转换等。比如如何安全访问字符,处理空字符串,避免缓冲区问题等。 总结来说,回答的结构应该是先概述string,然后分门别介绍常用方法,每个方法简要说明,示例代码,注意事项,并引用已有资料。最后提出相关问题,帮助用户深入学习。</think># C++ string常用方法总结 ## 一、构造与赋值 1. **构造函数** ```cpp string s1; // 空字符串 string s2("Hello"); // 从C风格字符串构造 string s3(5, 'A'); // "AAAAA" ``` 2. **赋值操作** ```cpp string s4 = s2; // 拷贝赋值 s4.assign("World", 3); // "Wor" ``` ## 二、元素访问 1. **下标访问** ```cpp char c1 = s2[1]; // 'e'(不检查越界)[^1] char c2 = s2.at(1); // 'e'(越界抛出异常)[^1] ``` ## 三、容量操作 1. **长度与容量** ```cpp int len = s2.size(); // 或 s2.length() bool isEmpty = s1.empty();// 判断是否为空 s2.clear(); // 清空字符串 ``` 2. **预分配内存** ```cpp s2.reserve(100); // 预分配100字节内存 ## 四、修改操作 1. **字符串拼接** ```cpp s2 += " World"; // 运算符重载 s2.append("!!!"); // 追加内容 2. **插入与删除** ```cpp s2.insert(5, " C++"); // "Hello C++ World!!!" s2.erase(5, 4); // 删除第5位开始的4个字符 3. **替换操作** ```cpp s2.replace(6, 5, "STL"); // 替换第6位开始的5个字符为"STL" ## 五、查找与子串 1. **查找方法** ```cpp size_t pos = s2.find("STL"); // 返回首次出现位置 size_t rpos = s2.rfind('o'); // 反向查找 2. **提取子串** ```cpp string sub = s2.substr(6, 3); // 从第6位取3个字符 ## 六、输入输出 1. **安全读取** ```cpp getline(cin, s2); // 读取整行(包括空格)[^2] ``` > 注意:使用`cin >> s2`后接`getline`时,需先用`cin.ignore()`清除残留的换行符[^2] ## 七、型转换 1. **C风格转换** ```cpp const char* cstr = s2.c_str(); // 获取C风格字符串 2. **数值转换** ```cpp string numStr = "123"; int num = stoi(numStr); // 字符串转整数
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值