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

字符串缓冲区(StringBuffer 和 StringBuilder)

什么是字符串缓冲区?

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

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

Java中有两种代表:StringBuffer 和 StringBuilder。

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+ 等 表单校验、字符串搜索、数据提取
相关推荐
2603_9658966210 分钟前
JavaScript 原型与原型链
开发语言·前端·javascript
朋友圈自动点赞工具16 分钟前
Ruby方法查找:对象不存方法
开发语言·前端·ruby·科技资讯
D e re k ZH25 分钟前
C++ 模板与泛型编程进阶(No 2)
开发语言·c++
一级新生28 分钟前
LLM _ Agent _ Skill _ 专家 的关系与选型笔记
java·开发语言·人工智能·笔记·大模型·智能体·skill
文丑颜不良啊29 分钟前
LeetCode1541~1560题目解析
java·leetcode
starzy199029 分钟前
Scala String操作:从插值器到正则的完整指南
开发语言·后端·scala
普通人632 分钟前
CSS-box-sizing-使用指南
开发语言·前端·css·1024程序员节
她说彩礼65万33 分钟前
C# TaskCompletionSource
java·开发语言·c#
当战神遇到编程35 分钟前
Java 基础入门(七):递归详解——执行原理、方法调用栈与经典练习
java
eggwyw39 分钟前
C++深入浅出探索数据结构的原理
开发语言·c++