字符串缓冲区和正则表达式

字符串缓冲区(StringBuffer 和 StringBuilder)

什么是字符串缓冲区?

缓冲区(Buffer):临时存储数据的一块区域。

字符串缓冲区:一种可变字符串序列,用于处理频繁修改的字符串。

Java中有两种代表:StringBufferStringBuilder

String、StringBuffer、StringBuilder 对比表:

特性 String(不可变) StringBuffer(可变,线程安全) StringBuilder(可变,非线程安全)
可变性 不可变字符串 可变字符串 可变字符串
线程安全
性能 最慢 中等 最快(适合单线程)
用途 字符串常量 多线程中频繁操作字符串 单线程中频繁操作字符串

StringBuffer常见操作:

java 复制代码
StringBuffer sb = new StringBuffer("Hello");

// 追加内容
sb.append(" World"); // -> Hello World

// 插入内容
sb.insert(5, ",");   // -> Hello, World

// 删除内容
sb.delete(5, 6);     // -> Hello World

// 替换内容
sb.replace(6, 11, "Java"); // -> Hello Java

// 反转内容
sb.reverse(); // -> avaJ olleH

// 转为 String
String str = sb.toString();

正则表达式(Regular Expression)

正则表达式的作用

它是一种匹配字符串的工具,用于查找、校验或替换字符串中的内容。

它常见的符号是

符号 含义 示例
. 匹配任意一个字符 a.c 匹配 abc, a3c
\d 任意一位数字([0-9]) \d{3} 匹配三位数字
\w 任意字母数字下划线 \w+ 匹配一个或多个单词字符
\s 空白字符(空格、tab)
^ 匹配行的开头 ^Hello 匹配以 Hello 开头
$ 匹配行的结尾 world$ 匹配以 world 结尾
[] 匹配指定范围内任意一个字符 [abc] 匹配 a 或 b 或 c
` `
* 零个或多个 a* 匹配0个或多个a
+ 一个或多个 a+ 匹配1个或多个a
? 零个或一个 a? 匹配0或1个a
{n} 恰好n个 \d{4} 匹配4位数字

常见使用

java 复制代码
import java.util.regex.*;

public class RegexExample {
    public static void main(String[] args) {
        String str = "abc123xyz456";

        // 查找所有数字
        Pattern pattern = Pattern.compile("\\d+");
        Matcher matcher = pattern.matcher(str);

        while (matcher.find()) {
            System.out.println("匹配到数字:" + matcher.group());
        }

        // 验证手机号
        String phone = "13812345678";
        boolean isPhone = phone.matches("1[3-9]\\d{9}");
        System.out.println("手机号格式正确?" + isPhone);
    }
}

总结

主题 关键词 使用场景
字符串缓冲区 StringBuffer, StringBuilder 字符串拼接、频繁修改的字符串
正则表达式 Pattern, Matcher, \\d+ 表单校验、字符串搜索、数据提取
相关推荐
say_fall1 分钟前
Python 核心语法与常用库完全指南
开发语言·python
喝醉酒的小白1 分钟前
如何安装 `.whl` 文件(Python Wheel 包)
开发语言·python
小尤笔记2 分钟前
【2024版】超详细Python+Pycharm安装保姆级教程,Python环境配置和使用指南,看完这一篇就够了
开发语言·ide·python·pycharm·编程语言·解释器
2401_882351523 分钟前
Flutter for OpenHarmony 商城App实战 - 地址编辑实现
android·java·flutter
数据大魔方5 分钟前
【期货量化入门】Python获取期货实时行情(TqSdk完整代码)
开发语言·python·区块链
爬山算法13 分钟前
Hibernate(47)Hibernate的会话范围(Scope)如何控制?
java·后端·hibernate
AIFQuant13 分钟前
2026 全球外汇免费实时行情汇率数据 API 接口大全
开发语言·python·websocket·金融·restful
雨中飘荡的记忆15 分钟前
Caffeine入门到实战
java
砚边数影15 分钟前
AI开发依赖引入:DL4J / Java-ML 框架 Maven 坐标配置
java·数据库·人工智能·深度学习·机器学习·ai·maven
一路向北North15 分钟前
nacos更改配置值后,应用提示Refresh keys changed 但是注入的值没有发生变化
java