Java中字符串截取方法详解及实际应用小结

 更新时间:2024年12月09日 11:00:06   作者:非洲it高手  
java中截取字符串的常用方法是使用String类的substring方法,本文通过实例代码给大家介绍Java中字符串截取方法详解及实际应用小结,感兴趣的朋友跟随小编一起看看吧

java中,截取字符串的常用方法是使用String类的substring方法。除了substring方法,Java中还有其他方法可以用来截取字符串,虽然这些方法可能不如substring直接,但在某些情况下可能会更灵活或适合特定需求。例如:正则表达式、split方法、StringBuilderStringBuffer类、第三方库Apache Commons Lang、StringTokenizer类。

使用String类的substring方法。

substring方法有两个重载版本:

substring(int beginIndex): 从指定的起始索引开始截取到字符串的末尾。

substring(int beginIndex, int endIndex): 从指定的起始索引开始截取到指定的结束索引(不包括结束索引)。

下面是一些示例代码,展示了如何使用这两个方法:

public class SubstringExample {
    public static void main(String[] args) {
        String str = "Hello, World!";
        // 截取从索引7开始到字符串末尾的子字符串
        String substr1 = str.substring(7);
        System.out.println("Substring from index 7 to end: " + substr1); // 输出: "World!"
        // 截取从索引0开始到索引5(不包括5)的子字符串
        String substr2 = str.substring(0, 5);
        System.out.println("Substring from index 0 to 5: " + substr2); // 输出: "Hello"
        // 截取从索引7开始到索引12(不包括12)的子字符串
        String substr3 = str.substring(7, 12);
        System.out.println("Substring from index 7 to 12: " + substr3); // 输出: "World"
    }
}

详细解释

substring(int beginIndex):

String substr1 = str.substring(7);

从索引7开始截取到字符串的末尾。输出结果为"World!"

substring(int beginIndex, int endIndex):

String substr2 = str.substring(0, 5);

从索引0开始截取到索引5(不包括5)。

输出结果为"Hello"

String substr3 = str.substring(7, 12);

从索引7开始截取到索引12(不包括12)。

输出结果为"World"

注意事项

  • 索引从0开始计数。
  • beginIndex必须大于等于0,且小于等于字符串的长度。
  • endIndex必须大于等于beginIndex,且小于等于字符串的长度。
  • 如果索引超出范围,会抛出StringIndexOutOfBoundsException异常。

示例代码的输出

运行上述代码,输出结果如下:

Substring from index 7 to end: World!
Substring from index 0 to 5: Hello
Substring from index 7 to 12: World

以下是一些替代方法:

除了substring方法,Java中还有其他方法可以用来截取字符串,虽然这些方法可能不如substring直接,但在某些情况下可能会更灵活或适合特定需求。

使用正则表达式

正则表达式可以用来匹配和提取字符串的特定部分。

import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegexExample {
    public static void main(String[] args) {
        String str = "Hello, World!";
        // 使用正则表达式提取"World"
        Pattern pattern = Pattern.compile("World");
        Matcher matcher = pattern.matcher(str);
        if (matcher.find()) {
            String match = matcher.group();
            System.out.println("Matched substring: " + match); // 输出: "World"
        }
    }
}

使用String的split方法

split方法可以根据指定的分隔符将字符串分割为多个子字符串,然后可以选择需要的部分。

public class SplitExample {
    public static void main(String[] args) {
        String str = "Hello, World!";
        // 使用逗号和空格作为分隔符分割字符串
        String[] parts = str.split(", ");
        // 提取第二部分
        if (parts.length > 1) {
            String part = parts[1];
            System.out.println("Second part: " + part); // 输出: "World!"
        }
    }
}

使用StringBuilder或StringBuffer

在某些情况下,你可能需要对字符串进行更多的操作,如删除或替换字符,可以使用StringBuilderStringBuffer类。

public class StringBuilderExample {
    public static void main(String[] args) {
        String str = "Hello, World!";
        // 创建一个StringBuilder对象
        StringBuilder sb = new StringBuilder(str);
        // 删除从索引0到索引7(不包括7)的部分
        sb.delete(0, 7);
        // 将结果转换为字符串
        String result = sb.toString();
        System.out.println("Resulting string: " + result); // 输出: "World!"
    }
}

使用Apache Commons Lang库

如果你可以使用第三方库,Apache Commons Lang提供了更丰富的字符串操作方法。

import org.apache.commons.lang3.StringUtils;
public class ApacheCommonsExample {
    public static void main(String[] args) {
        String str = "Hello, World!";
        // 使用Apache Commons Lang库的substring方法
        String substr = StringUtils.substring(str, 7, 12);
        System.out.println("Substring using Apache Commons: " + substr); // 输出: "World"
    }
}

使用StringTokenizer

StringTokenizer类可以用来分割字符串,尽管它现在已经不推荐使用,但在某些旧代码中可能会见到。

import java.util.StringTokenizer;
public class StringTokenizerExample {
    public static void main(String[] args) {
        String str = "Hello, World!";
        // 使用逗号和空格作为分隔符
        StringTokenizer tokenizer = new StringTokenizer(str, ", ");
        // 跳过第一部分
        if (tokenizer.hasMoreTokens()) {
            tokenizer.nextToken();
        }
        // 提取第二部分
        if (tokenizer.hasMoreTokens()) {
            String part = tokenizer.nextToken();
            System.out.println("Second part using StringTokenizer: " + part); // 输出: "World!"
        }
    }
}

字符串的截取和操作一些常见的场景和用途:

数据清洗和预处理

在处理数据时,特别是从文件、数据库或网络获取的数据,常常需要对字符串进行清洗和预处理。例如:

  • 从日志文件中提取特定信息。
  • 从用户输入中提取和验证数据。
  • 处理和规范化文本数据,如去除前后空格、转换大小写等。

搜索和替换

字符串搜索和替换是非常常见的操作,例如:

  • 在文档中查找和替换特定的单词或短语。
  • 在代码中查找并替换变量名或函数名。
  • 在配置文件中更新设置值。

解析和处理

从复杂的字符串中解析出有用的信息,例如:

  • 解析URL和查询参数。
  • 处理CSV或其他分隔符格式的文件。
  • 解析和处理JSON或XML字符串。

安全和验证

在用户输入和数据传输中,字符串操作可以用于安全和验证,例如:

  • 验证电子邮件地址、电话号码等格式。
  • 过滤和转义特殊字符以防止SQL注入或XSS攻击。
  • 解析和验证JWT(JSON Web Tokens)等认证信息。

示例代码

以下是一些具体的示例,展示字符串截取和操作在不同场景中的应用:

示例1:从URL中提取域名

public class URLParser {
    public static void main(String[] args) {
        String url = "https://www.example.com/path?query=123";
        // 提取协议
        String protocol = url.substring(0, url.indexOf(":"));
        System.out.println("Protocol: " + protocol); // 输出: "https"
        // 提取域名
        int start = url.indexOf("://") + 3;
        int end = url.indexOf("/", start);
        String domain = url.substring(start, end);
        System.out.println("Domain: " + domain); // 输出: "www.example.com"
    }
}

示例2:格式化日期字符串

import java.text.SimpleDateFormat;
import java.util.Date;
public class DateFormatExample {
    public static void main(String[] args) {
        Date date = new Date();
        // 使用SimpleDateFormat格式化日期
        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String formattedDate = formatter.format(date);
        System.out.println("Formatted Date: " + formattedDate); // 输出: 当前日期和时间
    }
}

示例3:验证电子邮件地址

public class EmailValidator {
    public static void main(String[] args) {
        String email = "user@example.com";
        // 使用简单的正则表达式验证电子邮件地址
        boolean isValid = email.matches("^[A-Za-z0-9+_.-]+@(.+)$");
        System.out.println("Is valid email: " + isValid); // 输出: true
    }
}

示例4:解析CSV字符串

public class CSVParser {
    public static void main(String[] args) {
        String csv = "John,Doe,30,New York";
        // 使用split方法解析CSV字符串
        String[] parts = csv.split(",");
        for (String part : parts) {
            System.out.println(part);
        }
        // 输出:
        // John
        // Doe
        // 30
        // New York
    }
}

到此这篇关于Java中字符串截取方法详解及实际应用的文章就介绍到这了,更多相关java字符串截取内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Mybatis懒加载的实现

    Mybatis懒加载的实现

    这篇文章主要介绍了Mybatis懒加载的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • Java9中对集合类扩展的of方法解析

    Java9中对集合类扩展的of方法解析

    这篇文章主要介绍了Java9 中对集合类扩展的of方法,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-09-09
  • java 并发编程之共享变量的实现方法

    java 并发编程之共享变量的实现方法

    这篇文章主要介绍了java 并发编程之共享变量的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09
  • IntelliJ IDEA中打开拼写检查与忽略提示曲线的方法

    IntelliJ IDEA中打开拼写检查与忽略提示曲线的方法

    今天小编就为大家分享一篇关于IntelliJ IDEA中打开拼写检查与忽略提示曲线的方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-10-10
  • Java 详解如何获取网络接口信息

    Java 详解如何获取网络接口信息

    读万卷书不如行万里路,只学书上的理论是远远不够的,只有在实践中才能获得能力的提升,本篇文章手把手带你用Java获取网络接口的信息,大家可以在过程中查缺补漏,提升水平
    2021-11-11
  • 浅谈java异常处理(父子异常的处理)

    浅谈java异常处理(父子异常的处理)

    下面小编就为大家带来一篇浅谈java异常处理(父子异常的处理)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-09-09
  • JAVA心得分享---return语句的用法

    JAVA心得分享---return语句的用法

    return算是各大语言的常客,基本上都有return语句,那么在JAVA中,return有什么特殊的地方吗,下面我们来分析下
    2014-05-05
  • Java实现图书管理系统的示例代码

    Java实现图书管理系统的示例代码

    这篇文章将通过Java实现一个简答的图书管理系统,本图书管理系统用对象数组的方式来提供操作方法,比较特别,建议新手学习,这对理解Java面向对象有很大帮助
    2022-11-11
  • java实现堆的操作方法(建堆,插入,删除)

    java实现堆的操作方法(建堆,插入,删除)

    下面小编就为大家分享一篇java实现堆的操作方法(建堆,插入,删除),具有很好的参考价值,希望对大家有所帮助
    2017-12-12
  • 基于Java编写简易的算式测试程序

    基于Java编写简易的算式测试程序

    本文将利用Java语言编写一个简易的算式测试程序,这个程序可以自动生成指定数量的加减乘三则运算题目,感兴趣的小伙伴可以了解一下
    2022-05-05

最新评论