Java 字符串常用方法

在Java中字符串截取是开发过程中经常使用的方法,它有多种方法实现。

  1. String类的subString()方法
  2. StringUtils工具类提供的方法
  3. split()正则方法

下面分别介绍这些方法,并给出相关例子。

String类的subString()方法截取

subString()方法如下

//从开始位置beginIndex截取
public String substring(int beginIndex) 
//从开始位置beginIndex截取直到endIndex
public String substring(int beginIndex, int endIndex) 

String类的subString()方法可以传入1个参数开始位置;也可以传入两个参数开始和结尾位置。

package com.yxjc;
public class Test  {

    public static void main(String args[]) {
        String s = "yxjc123_com";
        System.out.println(s.substring(4));//从位置4开始截取
        System.out.println(s.substring(8));//从位置4开始截取

        System.out.println(s.substring(0,4));//0到4
        System.out.println(s.substring(4,7));//4到6

    }

} 

测试一下

输出
123_com
com
yxjc
123

 从结果中,我们可以看出substring()方法遵循的是左闭右开 [beginIndex, endIndex) 原则,即左边要包含,右边不要。

StringUtils工具类提供的方法

可以使用maven导入这个包

<dependency>
            <groupId>commons-lang</groupId>
            <artifactId>commons-lang</artifactId>
            <version>2.6</version>
</dependency>

相关字符串截取方法如下

Java字符串截取方法

例子

 import org.apache.commons.lang.StringUtils;

import java.util.Arrays;

public class Test {
    public static void main(String[] args) {
        String s = "yxjc123_com";
        String ss = "yxjc123_com_hello_world";

        //与第一种方法效果一样
        System.out.println(StringUtils.substring(s, 4));
        System.out.println(StringUtils.substring(s, 4, 7));

        //截取某个字符串之前的字符
        System.out.println("【截取某个字符串之前的字符】");
        System.out.println("substringBefore:" + StringUtils.substringBefore(ss, "_"));//从分隔符第一次出现的位置向前截取
        System.out.println("substringBeforeLast:" + StringUtils.substringBeforeLast(ss, "_"));//从分隔符最后一次出现的位置向前截取

        //截取某个字符串之后的字符
        System.out.println("【截取某个字符串之后的字符】");
        System.out.println("substringAfter:" + StringUtils.substringAfter(ss, "_"));//从分隔符第一次出现的位置向后截取
        System.out.println("substringAfterLast:" + StringUtils.substringAfterLast(ss, "_"));//从分隔符最后一次出现的位置向后截取

        //截取两个字符串之间隔的字符
        System.out.println("【截取两个字符串之间隔的字符】");
        System.out.println("substringBetween:" + StringUtils.substringBetween(ss, "o"));//两个0之间
        System.out.println("substringBetween:" + StringUtils.substringBetween(ss, "_"));//两个_之间
        System.out.println("substringBetween:" + StringUtils.substringBetween(ss, "123", "hello"));//123和字符串hello之间
        System.out.println("substringsBetween:" +  Arrays.toString(StringUtils.substringsBetween(ss, "123", "hello")) );


    }
} 

输出

123_com
123
【截取某个字符串之前的字符】
substringBefore:yxjc123
substringBeforeLast:yxjc123_com_hello
【截取某个字符串之后的字符】
substringAfter:com_hello_world
substringAfterLast:world
【截取两个字符串之间隔的字符】
substringBetween:m_hell
substringBetween:com
substringBetween:_com_
substringsBetween:[_com_]

split()正则截取字符串

str.split()方法如下:

//返回字符串数组,传入要分割的正则字符串
public String[] split(String regex) 
//返回字符串数组,传入要分割的正则字符串,limit 是限制返回的数组长度
public String[] split(String regex, int limit) 

 例子

String str="yxjc123_com";
String[] strArr=str.split("_");
System.out.println(strArr[0]);
System.out.println(strArr[1]);

测试一下

带有limit参数的例子

 import java.util.Arrays;

public class Test{

    public static void main(String[] args) {
        String str="yxjc123_com_hello_world";
        String[] strArr=str.split("_",2);
        System.out.print(Arrays.toString(strArr) + "\n");
    }
}

测试一下

limit限制了返回的长度为2,减少了系统的开销。