Java学习字符串之方法返回、跳出嵌套循环及正则表达式

 更新时间:2026年03月03日 10:39:23   作者:HanryLi  
这篇文章主要介绍了Java学习字符串之方法返回、跳出嵌套循环及正则表达式的相关资料,包括字符串的基本操作(如长度、截取、替换等)以及正则表达式的匹配和替换操作,需要的朋友可以参考下

字符串

字符串(均可以查看API帮助文档查找更多方法):

String

String(字符串不可变,若修改就会new出一个新对象)

(int型)length() 返回字符串长度

(char型)charAt(int index) 取指定索引的字符(索引从 0 开始)

(boolean型)contains(CharSequence s) 判断是否包含指定子串

(boolean型)starsWith(String prefix)/endsWith(String suffix) 判断开头 / 结尾

(boolean型)equals(Object obj)内容相等判断(别用 ==,因为 == 对引用类型比较的是内存地址,而new出来的字符串即使内容相同,也会是不同的对象,地址不同)

(boolean型) equalsIgnoreCase(String another) 忽略大小写比较内容

(boolean型) isEmpty() 判断是否为空字符串

(String型)substring(int beginIndex) 从beginIndex(开始索引)截取到末尾

(String型)substring(int beginIndex, int endIndex) 左闭右开,含头不含尾截取字符串

(String [])split(String regex) 按正则拆分字符串,用 “正则表达式” 作为分隔符,把一个大字符串拆分成多个小字符串,存到数组里。

String str = "a, b; c|d";
String[] result = str.split("[,;|]");
// 正则 [,;|] 表示“逗号、分号、竖线中的任意一个”
// 结果是 ["a", " b", " c", "d"] → 按这几个符号把字符串拆成了4部分

(String型)replace(CharSequence old, CharSequence new) 全量替换(不支持正则)返回替换后的新字符串

String str = "a1b1c1";
String result = str.replace("1", "x");
// 结果是 "axbxcx" → 所有的"1"都被替换成了"x"

(String型)replaceAll(String regex, String replacement) 正则替换,返回正则替换后的新字符串

String str = "a1b22c333";
String result = str.replaceAll("\\d+", "x");
// 正则 \\d+ 表示“一个或多个数字”
// 结果是 "axbxcx" → 不管是1位、2位还是3位数字,都被替换成了"x"

(String型)toLowerCase()/toUpperCase() 转小写 / 大写

(String型)valueOf(任意类型) 静态方法,把其他类型转字符串

参数写法能接收的类型
CharSequence sString、StringBuilder 等
String prefix只能是 String
Object obj任意类型(String、Integer 等)

StringBuilder

可变字符序列,单线程场景首选,效率高,无线程安全保障核心是直接修改本身,不生成新对象,适合频繁拼接 / 修改

构造容器:StringBuilder()/StringBuilder(String init)

append(任意类型) 拼接

insert(int offset, 任意类型) 指定位置(索引)插入内容

delete(int start, int end) 删除指定区间字符(左闭右开)

replace(int start, int end, String str):替换指定区间(左闭右开)

reverse() 字符串反转

toString() 转为 String 类型

可以链式调用

StringJoiner

解决带分隔符拼接(如 a,b,c),无需手动处理首尾分隔符

构造容器:

StringJoiner(分隔符) 仅指定分隔符

StringJoiner(分隔符, 前缀, 后缀):带前后缀

add(String str) 添加单个元素

merge(StringJoiner other) 合并另一个 StringJoiner,other容器放在调用该方法容器的后面

toString() 转为String类型

可以链式调用

方法返回

在写函数时,如果要返回多个数据,可以把这些数据放在一个容器中(集合,数组),再把容器返回

跳出嵌套循环

在循环执行过程中,如果有循环嵌套,break无法跳出我们想要的循环,就可以在循环体(while,for,switch)前面加上一个标识符和一个冒号(符合标识符命名规范即可,循环就可以叫loop),在break那里,改为break 标识符(break loop;)

当然main方法也是一个线程,我在需要跳出循环处结束main方法这个主线程也可以,因此,把break;替换成return; return 0;正常状态结束,其他数字表示异常状态结束

当然还可以用System.exit(0);来跳出这个虚拟机的运行。

三者前者是跳出标识符运行的线程(后续如果有代码,依然可以运行),中者是跳出main函数,主线程结束,后者是跳出整个Java虚拟机,整个程序立刻结束

正则表达式

基础匹配符

符号含义示例
.匹配任意单个字符(除了换行符)a.c 匹配 abca1ca c
[]匹配方括号内的任意一个字符[abc] 匹配 ab 或 c
[^]匹配不在方括号内的任意一个字符[^abc] 匹配除 abc 之外的字符
-在[]中表示范围[a-z] 匹配小写字母,[0-9] 匹配数字

预定义字符集

符号含义
\d匹配数字(等价于 [0-9]
\D匹配非数字(等价于 [^0-9]
\w匹配字母、数字、下划线(等价于 [a-zA-Z0-9_]
\W匹配非字母、数字、下划线
\s匹配空白字符(空格、制表符、换行等)
\S匹配非空白字符

数量限定符

用来指定前面的字符或组要出现多少次

符号含义示例
*匹配 0 次或多次a* 匹配 ""aaaaaa...
+匹配 1 次或多次a+ 匹配 aaaaaa...
?匹配 0 次或 1 次a? 匹配 "" 或 a
{n}精确匹配 n 次a{3} 匹配 aaa
{n,}匹配至少 n 次a{2,} 匹配 aaaaa...
{n,m}匹配 n 到 m 次a{2,4} 匹配 aaaaaaaaa

边界匹配符

用来定位字符串的位置,不匹配任何字符

符号含义示例
^匹配字符串的开头^abc 匹配以 abc 开头的字符串
$匹配字符串的结尾abc$ 匹配以 abc 结尾的字符串
\b匹配单词边界(比如空格、标点)\bcat\b 匹配独立的 cat,不匹配 category 里的 cat

逻辑与分组

符号含义示例
()分组,把多个字符当作一个整体处理(ab)+ 匹配 abababababab...
``或,匹配左右任意一个表达式`ab匹配ab`
\num引用第 num 个分组的内容(反向引用)(a)\1 匹配 aa

转义字符

如果想匹配 .*( 这类有特殊含义的符号,需要在前面加 \ 进行转义。匹配小数点 . 要写成 \.;匹配星号 * 要写成 \*

常见示例

匹配手机号^1[3-9]\\d{9}$
匹配邮箱^[a-zA-Z0-9_.-]+@[a-zA-Z0-9-]+(\\.[a-zA-Z0-9-]+)*$
匹配 URL^https?://[\\w-]+(\\.[\\w-]+)+(/[\\w-./?%&=]*)?$

匹配18 位身份证

^[1-9]\\d{5}(18|19|20)\\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\\d|3[01])\\d{3}([0-9Xx])$

使用方法

场景代码实例
验证格式String regex = "你的正则"; boolean legal = 目标字符串.matches(regex);
替换内容String result = 目标字符串.replaceAll("你的正则", "替换后的内容");
拆分字符串String[] arr = 目标字符串.split("你的正则");
提取内容Pattern p = Pattern.compile("你的正则"); Matcher m = p.matcher(目标字符串); while(m.find()) { System.out.println(m.group()); }

总结 

到此这篇关于Java学习字符串之方法返回、跳出嵌套循环及正则表达式的文章就介绍到这了,更多相关Java字符串方法返回、跳出嵌套循环及正则内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • maven中的scope与systemPath用法

    maven中的scope与systemPath用法

    这篇文章主要介绍了maven中的scope与systemPath用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • echarts图表导出excel示例

    echarts图表导出excel示例

    这篇文章主要介绍了echarts图表导出excel示例,需要的朋友可以参考下
    2014-04-04
  • Java开发岗位面试被问到反射怎么办

    Java开发岗位面试被问到反射怎么办

    这篇文章主要介绍了java 面向对象面试集锦的相关资料,这里整理了面向对象的基础知识,帮助大家学习理解此部分的知识,需要的朋友可以参考下
    2021-07-07
  • Java实现字符串与基本数据类型转换的全面指南

    Java实现字符串与基本数据类型转换的全面指南

    本文详细介绍了Java中字符串与基本数据类型之间转换的方法,包括将字符串转换为基本数据类型,以及将基本数据类型转换为字符串的各种技术,有需要的小伙伴可以了解下
    2025-09-09
  • Ibatis配置xml文件CDATA使用方法详解

    Ibatis配置xml文件CDATA使用方法详解

    这篇文章主要介绍了Ibatis配置xml文件CDATA使用方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-12-12
  • Java内存模型(JMM)及happens-before原理

    Java内存模型(JMM)及happens-before原理

    这篇文章主要介绍了java内存模型(JMM)及happens-before原理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-04-04
  • JAVA中String介绍及常见面试题小结

    JAVA中String介绍及常见面试题小结

    这篇文章主要介绍了JAVA中String介绍及常见面试题,在java面试中经常会被面试官问到,小编通过实例代码相结合给大家详细介绍,需要的朋友可以参考下
    2020-02-02
  • Java实战之医院管理系统的实现

    Java实战之医院管理系统的实现

    这篇文章主要介绍了如何利用Java实现医院管理系统,文中用到的技术有:SpringBoot、Layui、Freemaker等,感兴趣的同学可以了解一下
    2022-04-04
  • 解决java.lang.ClassCastException的java类型转换异常的问题

    解决java.lang.ClassCastException的java类型转换异常的问题

    这篇文章主要介绍了解决java.lang.ClassCastException的java类型转换异常的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-09-09
  • SpringBoot2.X Devtools热部署实现解析

    SpringBoot2.X Devtools热部署实现解析

    这篇文章主要介绍了SpringBoot2.X Devtools热部署实现解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-08-08

最新评论