Java如何截取字符串

在Java中,使用String类的substring()方法截取字符串,提供起始索引(包含)和可选结束索引(不包含),如str.substring(2,5),注意索引从0开始,且需避免越界异常。

在Java编程中,字符串截取是高频操作,用于提取子串、解析数据或格式化文本,核心方法是substring(),属于String类,设计时需注意索引规则和性能,以下是详细指南:

Java如何截取字符串


核心方法:substring()

String类提供两个重载方法:

  1. 单参数截取
    substring(int beginIndex)

    • beginIndex开始截取到字符串末尾。
    • 示例:
      String str = "Hello, World!";
      String result = str.substring(7);  // 从索引7开始
      System.out.println(result);        // 输出 "World!"
  2. 双参数截取
    substring(int beginIndex, int endIndex)

    • 截取[beginIndex, endIndex)区间(左闭右开)。
    • 示例:
      String str = "Java Programming";
      String result = str.substring(5, 16); // 索引5到15
      System.out.println(result);           // 输出 "Programming"

关键注意事项

  1. 索引规则

    Java如何截取字符串

    • 索引从0开始,最大值为字符串长度-1
    • 越界问题
      • 若索引为负数或超过长度,抛出StringIndexOutOfBoundsException
      • 安全做法:先校验索引
        if (beginIndex >= 0 && endIndex <= str.length()) {
            str.substring(beginIndex, endIndex);
        }
  2. 不可变性

    • 截取后返回新字符串,原字符串不变:
      String original = "Apple";
      String sub = original.substring(0, 3); // "App"
      System.out.println(original);          // 仍输出 "Apple"

其他截取方法

  1. split() 分割字符串
    按正则表达式拆分,适合提取特定部分:

    String data = "name=John;age=30";
    String[] parts = data.split(";"); 
    System.out.println(parts[0]); // 输出 "name=John"
  2. StringTokenizer(旧版)
    适用于简单分隔符场景(不推荐新项目使用):

    StringTokenizer tokenizer = new StringTokenizer("one,two,three", ",");
    while (tokenizer.hasMoreTokens()) {
        System.out.println(tokenizer.nextToken()); // 依次输出 "one" "two" "three"
    }

性能与安全建议

  1. 大字符串处理
    • 避免对超大字符串(如文件内容)频繁截取,可能引发内存浪费,改用StringBuilder或流处理。
  2. 用户输入安全

    截取用户输入时(如SQL、HTML),需先转义特殊字符,防止注入攻击。

    Java如何截取字符串

  3. 编码问题
    • 含多字节字符(如中文)时,确保索引对齐字符边界,避免截断乱码:
      String chinese = "你好世界";
      // 错误:可能截断中文字符
      String safeSub = chinese.substring(0, 2); // "你好"(一个中文占2字节,但Java字符是UTF-16编码,一个字符是一个char)

实战示例

场景:提取URL中的域名

String url = "https://www.example.com/page";
// 步骤1:移除协议部分
int start = url.indexOf("://") + 3; // 索引跳到"www"开头
// 步骤2:找到第一个斜杠位置
int end = url.indexOf("/", start); 
// 步骤3:截取域名
String domain = (end == -1) ? url.substring(start) : url.substring(start, end);
System.out.println(domain); // 输出 "www.example.com"

  • 首选substring():精确控制截取范围,注意索引左闭右开。
  • 避免越界:始终校验索引范围。
  • 考虑性能:大文本用StringBuilderArrays.copyOfRange(字符数组截取)。
  • 安全第一:处理外部输入时,结合安全库(如Apache Commons Text)过滤风险字符。

引用说明

  • Oracle官方文档:String.substring()
  • 《Java核心技术卷I》(Cay S. Horstmann著)字符串操作章节
  • 安全实践参考:OWASP Java安全指南

原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/31571.html

(0)
酷盾叔的头像酷盾叔
上一篇 2025年6月20日 00:58
下一篇 2025年6月20日 01:05

相关推荐

  • Java怎么读写文件?

    在Java中操作文件主要通过java.io.File类实现,支持创建、删除、重命名及检查文件属性等基础功能,结合FileInputStream/FileOutputStream可读写字节数据,使用FileReader/FileWriter处理字符流,NIO包的Files和Paths类提供更高效的文件操作,如复制、移动及遍历目录。

    2025年5月30日
    400
  • Java怎样缩短字符串长度

    在Java中获取字符串长度使用length()方法,返回字符串的字符数量(包括空格和特殊字符),”abc”.length()返回3,注意该方法统计的是UTF-16编码的代码单元数量,对于包含Unicode扩展字符(如emoji)的字符串,实际字符数可能小于返回值,此时需用codePointCount()精确计算。

    2025年6月18日
    000
  • Java权限设置如何修改才能提升安全性?

    修改Java权限可通过文件操作或安全管理器实现,文件权限可使用chmod命令或File类setReadable等方法调整;程序权限需配置SecurityManager策略文件,定义访问控制规则限制代码执行权限,确保系统安全。

    2025年5月28日
    400
  • Java如何打印线程ID?

    在Java中打印线程ID,使用Thread.currentThread().getId()获取当前线程的唯一长整型ID,并通过System.out.println()输出,System.out.println(“Thread ID: ” + Thread.currentThread().getId());。

    2025年6月11日
    000
  • 如何启动Java的JVM?

    要启动JVM,只需运行Java程序,使用命令行输入java YourClassName或java -jar yourfile.jar,JVM会自动加载并执行字节码,需先安装Java环境。

    2025年6月12日
    000

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN