Java 字符串操作实战:手把手教你检索解析图书信息
·
在 Java 编程中,String 字符串是最常用的数据类型之一,而字符串的检索、截取、查找等操作更是日常开发的核心技能。今天我们通过一个「图书信息检索解析」的实战案例,吃透 Java 字符串的高频方法,轻松搞定字符串查找、截取、判断包含关系等核心知识点。
一、案例需求
有一段完整的图书信息字符串,包含书名、出版时间、出版社、价格、页数,需要实现以下功能:
- 判断字符串中是否包含指定关键词「程序」
- 截取并输出图书的出版时间
- 截取并解析图书价格,判断是否≥29 元
- 截取并解析图书页数,判断是否≥360 页
二、完整代码实现
我们直接基于题目模板补全代码,核心是替换【代码】部分,用到String 类的核心方法:
public class FindMess {
public static void main(String args[]) {
String mess = "书名:Java 程序设计,出版时间:2011.10.01,"+
"出版社:清华大学出版社,价格:29.8 元,页数:389 页";
// 代码1:判断mess中是否含有"程序"
if(mess.contains("程序")) {
System.out.println("图书信息包含有\"程序\"");
}
// 代码2:返回mess中第2个冒号的位置
int index=mess.indexOf(":", mess.indexOf(":") + 1);
String date = mess.substring(index+1,index+11);
System.out.println(date);
// 代码3:返回首次出现"价格"的位置
int pricePosition= mess.indexOf("价格");
int endPosition=mess.indexOf("元");
String priceMess = mess.substring(pricePosition+3,endPosition);
System.out.println("图书价格:"+priceMess);
double price=Double.parseDouble(priceMess);
if(price>=29) {
System.out.println("图书价格"+price+"大于或等于 29 元");
}
else {
System.out.println("图书价格"+price+"小于 29 元");
}
// 代码4:返回最后一个冒号位置
index = mess.lastIndexOf(":");
endPosition=mess.lastIndexOf("页");
String pageMess = mess.substring(index+1,endPosition);
int p = Integer.parseInt(pageMess);
if(p>=360) {
System.out.println("图书的页数"+p+"大于或等于 360");
}
else {
System.out.println("图书的页数"+p+"小于 360");
}
}
}
运行结果
图书信息包含有"程序"
2011.10.01
图书价格:29.8
图书价格29.8大于或等于 29 元
图书的页数389大于或等于 360
三、核心知识点详解
这个案例几乎覆盖了 Java 字符串最常用的 5 个方法,也是面试和开发的高频考点,我们逐一拆解:
1. contains(CharSequence s):判断字符串是否包含子串
- 作用:检查当前字符串中是否包含指定的子字符串,返回
boolean类型(true/false)。 - 案例用法:
mess.contains("程序")→ 判断图书信息是否包含「程序」。 - 注意:区分大小写,比如
"Program"和"program"是不同的。
2. indexOf(String str) / indexOf(String str, int fromIndex):查找子串首次出现的索引
- 无参重载:
indexOf(str)→ 从字符串开头查找,返回指定子串第一次出现的索引位置,找不到返回-1。 - 带起始索引重载:
indexOf(str, fromIndex)→ 从fromIndex位置开始查找,返回子串首次出现的索引。 - 案例用法:
- 找第 2 个冒号:
mess.indexOf(":", mess.indexOf(":") + 1)→ 先找第一个冒号,再从它的下一位找第二个冒号。 - 找「价格」首次位置:
mess.indexOf("价格")→ 定位价格字段的起始位置。
- 找第 2 个冒号:
3. lastIndexOf(String str):查找子串最后一次出现的索引
- 作用:从字符串末尾向前查找,返回指定子串最后一次出现的索引位置,找不到返回
-1。 - 案例用法:
mess.lastIndexOf(":")→ 找到最后一个冒号(对应「页数」前的冒号)。
4. substring(int beginIndex, int endIndex):截取子字符串
- 作用:从
beginIndex(包含)开始,截取到endIndex(不包含),返回新的子串。 - 核心规则:截取长度 =
endIndex - beginIndex。 - 案例用法:
substring(index+1, index+11)→ 截取出版时间(2011.10.01 共 10 个字符)。
5. 字符串转基本数据类型
Double.parseDouble(String s):将字符串转为双精度浮点数(用于价格)。Integer.parseInt(String s):将字符串转为整数(用于页数)。- 注意:字符串必须是纯数字格式,否则会报
NumberFormatException数字格式异常。
四、代码关键逻辑梳理
- 判断包含关系:用
contains()快速校验关键词; - 定位指定字符:用
indexOf()/lastIndexOf()精准定位冒号、关键字的位置; - 截取有效信息:通过
substring()根据索引截取时间、价格、页数; - 类型转换:将截取的字符串转为数字,做数值判断。
五、总结
Java 字符串操作是编程入门的核心基础,contains()、indexOf()、lastIndexOf()、substring()这四个方法是字符串检索与截取的关键。
更多推荐
所有评论(0)