5.1 字符串

摘要
本实验全面介绍Java中字符串(String)的创建方法和常用操作技巧。内容涵盖:字符串的三种初始化方式、位置相关操作(长度获取、字符定位、索引查找)、格式转换操作(大小写转换、字符数组转换)、文本清理操作(空格处理、内容替换)、条件判断操作(内容检查、格式验证)、以及字符串分割和截取等高级操作。

字符串是我们在编程中最常用的数据类型之一,就像我们日常生活中的文字一样重要。无论是显示用户姓名、处理用户输入,还是生成报告,都离不开字符串操作。

这节课我们将学习:

  • 如何创建和初始化字符串
  • 字符串的各种实用操作方法
  • 在实际编程中如何灵活运用这些技巧
学习目标

通过本节学习,你将掌握:

  1. 字符串创建 - 掌握多种字符串初始化方法
  2. 字符串操作 - 学会查找、替换、转换等常用操作
  3. 实际应用 - 能够处理真实的文本数据需求
  4. 代码优化 - 了解字符串操作的最佳实践

在Java中,有多种方式可以创建字符串。就像有不同方式可以获得一本书一样(买新书、借书、复印等),创建字符串也有不同的方法。

字符串创建的常见方式

方式一:直接赋值(最常用)

java

String name = "张三";
String greeting = "你好,世界!";

方式二:使用 new 关键字

java

String name = new String("张三");
String greeting = new String("你好,世界!");

方式三:从字符数组创建

java

char[] chars = {'J', 'a', 'v', 'a'};
String word = new String(chars);
字符串初始化的多种方法
为什么推荐方式一?
直接用双引号创建字符串更简单、效率更高。Java会自动优化相同内容的字符串,避免重复创建。

就像在一本书中查找特定的字或页码一样,我们也需要在字符串中进行各种定位操作。

位置操作方法

length() - 获取字符串长度

java

String text = "Hello World";
int len = text.length();  // 结果11

charAt(index) - 获取指定位置的字符

java

String text = "Hello";
char ch = text.charAt(0);  // 结果:'H'(第0个位置)
char ch2 = text.charAt(4); // 结果'o'第4个位置

indexOf(字符) - 查找字符第一次出现的位置

java

String text = "Hello World";
int pos = text.indexOf('o');  // 结果4第一个'o'的位置

lastIndexOf(字符) - 查找字符最后一次出现的位置

java

String text = "Hello World";
int pos = text.lastIndexOf('o');  // 结果7最后一个'o'的位置
字符串位置操作示例
重要提醒

字符串的位置编号从 0 开始,不是从 1 开始!

  • “Hello” 中,‘H’ 在位置 0,’e’ 在位置 1,以此类推
  • 如果找不到指定字符,indexOf() 会返回 -1

有时候我们需要把文字转换成不同的形式,比如全部大写、全部小写,或者转换成字符数组进行更复杂的操作。

转换操作方法

toUpperCase() - 转换为大写

java

String text = "Hello World";
String upper = text.toUpperCase();  // 结果"HELLO WORLD"

toLowerCase() - 转换为小写

java

String text = "Hello World";
String lower = text.toLowerCase();  // 结果"hello world"

toCharArray() - 转换为字符数组

java

String text = "Hello";
char[] chars = text.toCharArray();  // 结果['H', 'e', 'l', 'l', 'o']
字符串转换操作示例
实际应用场景
  • 大小写转换:处理用户输入时,统一转换为小写进行比较
  • 字符数组:需要对字符串进行复杂操作时,转换为数组更方便
  • 数据清理:标准化文本格式,便于后续处理

在处理用户输入或文件数据时,经常需要清理文字内容,比如去掉多余的空格或替换某些字符。

清理操作方法

trim() - 去除首尾空格

java

String text = "  Hello World  ";
String cleaned = text.trim();  // 结果"Hello World"

replace(旧字符, 新字符) - 替换字符

java

String text = "Hello World";
String replaced = text.replace('o', 'a');  // 结果"Hella Warld"

replace(旧字符串, 新字符串) - 替换字符串

java

String text = "Hello World";
String replaced = text.replace("World", "Java");  // 结果"Hello Java"

实际应用场景
  • 数据清理:处理用户输入时去除意外的空格
  • 文本标准化:将特殊字符替换为标准格式
  • 敏感词过滤:将不当内容替换为星号等

有时候我们需要检查字符串是否符合某些条件,比如是否为空、是否包含特定内容等。

判断操作方法

isEmpty() - 判断是否为空

java

String text = "";
boolean empty = text.isEmpty();  // 结果:true

String text2 = "Hello";
boolean empty2 = text2.isEmpty();  // 结果false

startsWith(前缀) - 判断是否以指定字符串开始

java

String text = "Hello World";
boolean starts = text.startsWith("Hello");  // 结果:true
boolean starts2 = text.startsWith("World");  // 结果false

endsWith(后缀) - 判断是否以指定字符串结束

java

String text = "Hello World";
boolean ends = text.endsWith("World");  // 结果:true
boolean ends2 = text.endsWith("Hello");  // 结果false

contains(子字符串) - 判断是否包含指定内容

java

String text = "Hello World";
boolean contains = text.contains("lo Wo");  // 结果:true
boolean contains2 = text.contains("Java");  // 结果false

实际应用场景
  • 文件类型判断:检查文件名是否以 “.jpg” 结尾
  • 输入验证:检查邮箱是否包含 “@” 符号
  • 条件筛选:从列表中找出以特定字母开头的姓名
  • 空值检查:确保用户输入不为空

有时候我们需要从长字符串中提取部分内容,或者把一个字符串按照某种规则分成多个部分。

分割操作方法

substring(起始位置) - 从指定位置截取到末尾

java

String text = "Hello World";
String sub = text.substring(6);  // 结果"World"

substring(起始位置, 结束位置) - 截取指定范围

java

String text = "Hello World";
String sub = text.substring(0, 5);  // 结果:"Hello"
String sub2 = text.substring(6, 11); // 结果"World"

split(分隔符) - 按指定字符分割成数组

java

String text = "苹果,香蕉,橙子";
String[] fruits = text.split(",");  
// 结果:["苹果", "香蕉", "橙子"]

String sentence = "Java is great";
String[] words = sentence.split(" ");  
// 结果["Java", "is", "great"]

实际应用场景
  • 提取信息:从 “张三_18_男” 中提取姓名、年龄、性别
  • 处理路径:从文件路径中提取文件名
  • 数据解析:处理CSV格式的数据文件
  • 用户输入处理:分析用户输入的命令和参数
动手练习

任务:制作一个简单的文本处理器

要求:

  1. 创建一个包含你姓名的字符串
  2. 检查姓名长度,如果超过3个字符就截取前3个
  3. 将姓名转换为大写
  4. 判断姓名是否包含特定字符
  5. 输出所有处理结果

参考代码框架:

java

public class TextProcessor {
    public static void main(String[] args) {
        String name = "你的姓名";
        
        // 在这里完成练习任务
        System.out.println("原始姓名:" + name);
        System.out.println("姓名长度:" + name.length());
        // ... 继续完成其他任务
    }
}
本节收获

字符串创建 - 掌握了多种初始化方法
位置操作 - 学会查找和定位字符
转换操作 - 能够改变字符串格式
清理操作 - 会处理和美化文本内容
判断操作 - 能够检查字符串特征
分割操作 - 学会提取和分解文本

现在你已经掌握了字符串操作的核心技能!

相关内容