【Java 经常使用类】java.lang包(6)String类的经常使用方法




前言

String字符串类很是重要,同时他也要有不少方法。推荐把String字符串中经常使用的方法都用的很熟练。这样能够帮你节省不少处理字符串的时间。java

对于字符串处理我很是推荐去学习一下正则表达式,他很是的强大,在处理字符串很是有用。web

正则表达式学习请点击:【正则表达式】总结正则表达式

1、大纲

String 类表明字符串。Java 程序中的全部字符串字面值(如 “abc” )都做为此类的实例实现。 在这里插入图片描述数组

public class BigDecimal extends Number implements Comparable<BigDecimal>

2、使用

1.构造器

1.1 建立

使用字面量和使用构造器建立字符串是同样的。svg

String s = "str";
        String s2 = new String("str");
1.2 编码转换

将某个字符串的编码进行转换。(记得要抛出一个异常)学习

String s = "str";
        // 将字符串s变成字节数组
        byte[] bytes = s.getBytes();
        // 将字节数组bytes的编码格式变成utf-8
        String s2 = new String(bytes, "UTF-8");
        System.out.println(s2);  // str

2.经常使用方法

2.1 获取
获取长度

length()
返回此字符串的长度。测试

获取当前调用该方法的字符串长度。编码

String s = "hello";
        int len = s.length();
        System.out.println(len); // 5

获取字符

charAt(int index)
返回指定索引处的 char 值。spa

获取字符串s中下标为0的字符。.net

char c = s.charAt(0);
        System.out.println(c); // h

获取(字符或字符串)索引(从头开始)

indexOf(int ch)
返回指定字符在此字符串中第一次出现处的索引。

获取字符和字符串出现出的索引(即下标)。若是没有找到会返回-1。

String s = "hello";
        // 从字符串s中获取第一次出现'o'字符的位置
        int i1 = s.indexOf('o');
        // 从字符串s中获取第一次出现'llo'字符串的位置
        int i2 = s.indexOf("llo");

        System.out.println(i1); // 4
        System.out.println(i2); // 2

        // 从字符串下标1的位置开始,获取第一次出现'0'字符串的位置
        int i3 = s.indexOf('o', 1);
        // 从字符串下标1的位置开始,获取第一次出现'll0'字符串的位置
        int i4 = s.indexOf("llo", 1);

        System.out.println(i3); // 4
        System.out.println(i4); // 2

获取(字符或字符串)索引(从末尾开始)

lastIndexOf(int ch)
返回指定字符在此字符串中最后一次出现处的索引。

获取最后一次出现相同字符或字符串的索引。和上面的方法类似。

须要注意的是:指定的索引是从最后面开始的!

String s = "hello";
        // 从字符串s中获取最后一次出现'o'字符的位置
        int i1 = s.lastIndexOf('o');
        // 从字符串s中获取最后一次出现'llo'字符串的位置
        int i2 = s.lastIndexOf("llo");

        System.out.println(i1); // 4
        System.out.println(i2); // 2

        // 从字符串末尾位置开始,从后往前,获取最后一次出现'0'字符串的位置
        int i3 = s.lastIndexOf('o', s.length());
        // 从字符串末尾位置开始,从后往前,获取最后一次出现'll0'字符串的位置
        int i4 = s.lastIndexOf("llo", s.length());

        System.out.println(i3); // 4
        System.out.println(i4); // 2
2.2 判断
判断相等

equals(Object anObject) 、contentEquals(CharSequence cs)
将此字符串与指定的对象比较。

这两个都是比较两个字符串是否相等,若是相等则返回true

String s = "hello";
        boolean b1 = s.equals("hello");
        boolean b2 = s.contentEquals("hello");
        System.out.println(b1); // true
        System.out.println(b2); // true

判断相等(忽视大小写)

equalsIgnoreCase(String anotherString)
将此 String 与另外一个 String 比较,不考虑大小写。

忽视大小写比较是否相等。

String s = "hello";
        boolean b1 = s.equalsIgnoreCase("HELLO");
        System.out.println(b1); // true

判断相等(字典顺序)

compareTo(String anotherString)
按字典顺序比较两个字符串。
compareToIgnoreCase(String str)
按字典顺序比较两个字符串,不考虑大小写。

比较此对象与指定对象的顺序。若是该对象小于、等于或大于指定对象,则分别返回负整数、零或正整数。

“a” 和 “a” 相等,因此返回0。“a” 小于 “b” 因此返回-1。

// 考虑大小写
		int i = "a".compareTo("a");
        System.out.println(i); // 0
        int i2 = "a".compareTo("b");
        System.out.println(i2); // -1
        
		// 同上同样,只不过不考虑大小写而已
		int i = "A".compareToIgnoreCase("a");
        System.out.println(i); // 0
        int i2 = "A".compareToIgnoreCase("b");
        System.out.println(i2); // -1

判断包含

contains(CharSequence s)
当且仅当此字符串包含指定的 char 值序列时,返回 true。

查找一个字符串中是否有某个字符或字符串(字符或者字符串均可以,由于参数为:CharSequence类型的)。

以下查找字符串 “hello” 中是否有字符 ‘h’。

String s = "hello";
        boolean h = s.contains("h");
        System.out.println(h); // true

判断包含(忽视大小写)

regionMatches(boolean ignoreCase, int toffset, String other, int ooffset, int len)
测试两个字符串区域是否相等。

咱们会发现,上面的contains()方法判断是否包含,没法判断有大小写不区分的状况。因此可使用下面这个方法来进行判断是否包含。

ignoreCase:是否忽略大小写(忽略true)
toffset:字符串s的起始偏移量(判断开始位置)
other:字符串参数(须要判断是否包含的子字符串)
ooffset:子字符串的起始偏移量(判断开始位置)
len:须要判断的长度(子字符串须要判断是否匹配的长度)

String s = "hello";
        String subStr = "he";

        boolean b = s.regionMatches(true, 0, subStr, 0, subStr.length());
        System.out.println(b); // true

判断前缀

startsWith(String prefix) 、startsWith(String prefix, int toffset)
测试此字符串是否以指定的前缀开始。

有两个方法,都是判断字符串是否以某个前缀(字符串)开始。、

只不过第二个方法能够指定开始判断前缀的位置。

String s = "hello";

        boolean b = s.startsWith("he"); // 判断是不是指定前缀he开始
        System.out.println(b); // true

        boolean b2 = s.startsWith("he", 0); // 判断从下标0位置处开始,是否为指定前缀he开始
        System.out.println(b2); // true

判断后缀

endsWith(String suffix)
测试此字符串是否以指定的后缀结束。

判断字符串是否以指定的后缀结束的。

String s = "hello";

        boolean b = s.endsWith("llo");
        System.out.println(b); // true

判断正则匹配

matches(String regex)
告知此字符串是否匹配给定的正则表达式。

判断此字符串是否知足给定的正则表达式匹配。

String s = "hello";
        boolean m = s.matches("\\w+");
        System.out.println(m); // true
2.3 其余经常使用
拼接

concat(String str)
将指定字符串链接到此字符串的结尾。

至关于使用了 ‘+’ 符号。

String s = "hello";
        // 至关于 String s = "hello" + "world.";
        String concat = s.concat("world.");

替换(单个)

replace(char oldChar, char newChar) 、replace(CharSequence target, CharSequence replacement)
返回一个新的字符串,它是经过用 newChar 替换此字符串中出现的全部 oldChar 获得的。

这两个方法能够替换单个字符。也能够替换单个字符串。

String s = "hello";

        String re = s.replace("h", "H");
        System.out.println(re); // Hello

        String re2 = s.replace("hello", "HELLO");
        System.out.println(re2); // HELLO

正则替换(第一个)

replaceFirst(String regex, String replacement)
使用给定的 replacement 替换此字符串匹配给定的正则表达式的第一个子字符串。

会将第一个知足该正则表达式的字符串进行替换。

“hello” 为正则表达式字符串,“HELLO” 为将要替换的字符串。

String s = "hello, hello!";

        String rf = s.replaceFirst("hello", "HELLO");
        System.out.println(rf); // HELLO, hello!

正则替换(多个)

replaceAll(String regex, String replacement)
使用给定的 replacement 替换此字符串全部匹配给定的正则表达式的子字符串。

会将全部知足正则表达式的字符串进行替换。

"h"为正则表达式字符串, "H"为将要替换的字符串。

String s = "hello, hello!";

        String ra = s.replaceAll("h", "H");
        System.out.println(ra); // Hello, Hello!

拆分(所有)

split(String regex)
根据给定正则表达式的匹配拆分此字符串。

该方法会根据给定的正则表达式进行字符串拆分。

String s = "aa-bb-cc-dd-ee";

        String[] split = s.split("-");
        for (int i = 0; i < split.length; i++) {
            System.out.print(split[i] + ",");
        }
        // 最终输出 aa,bb,cc,dd,ee,

拆分(指定个数)

split(String regex, int limit)
根据匹配给定的正则表达式来拆分此字符串。

该方法会根据给定的正则表达式进行字符串拆分,同时还能够设置他指定拆分的个数。

以下,"-" 为正则表达式,2为按照正则表达式拆分红两个

String s = "aa-bb-cc-dd-ee";

        String[] split = s.split("-", 2);
        for (int i = 0; i < split.length; i++) {
            System.out.print(split[i] + ",");
        }
        // 最终输出 aa,bb-cc-dd-ee,

得到子字符串

subSequence(int beginIndex, int endIndex) 、substring(int beginIndex) 、substring(int beginIndex, int endIndex)
返回一个新的字符串,它是此字符串的一个子字符串。

subSequence() 方法返回的是一个子序列。其余两个返回的都是一个子字符串。

String s = "hello";

        String sub01 = s.substring(1); // 子字符串从下标1开始获取到最后
        System.out.println(sub01);

        String sub02 = s.substring(1, 2); // 子字符串从下标1开始(包含)开始获取,到下标2结束(不包含)
        System.out.println(sub02); // e

        CharSequence sub03 = s.subSequence(1, 2); // 同上,不过类型不同
        System.out.println(sub03); // e

得到字符数组

toCharArray()
将此字符串转换为一个新的字符数组。

将一个字符串转成成一个新的字符串组。

String s = "hello";

        char[] chars = s.toCharArray();
        for (int i = 0; i < chars.length; i++) {
            System.out.print(chars[i] + ",");
        }
        // 最后输出h,e,l,l,o,

得到大小写

toLowerCase() 、toUpperCase()
使用默认语言环境的规则将此 String 中的全部字符都转换为小写。

能够将一个字符串所有转换成小写或者大写。

String s = "hello";

        String lc = s.toLowerCase(); // 转换成小写
        System.out.println(lc); // hello

        String uc = s.toUpperCase(); // 转换成大写
        System.out.println(uc); // HELLO

去除首尾空白

trim()
返回字符串的副本,忽略前导空白和尾部空白。

能够去除一个字符串的前面和最后面的空白

String s = " hello ";

        String trim = s.trim();
        System.out.println(trim);
2.4 静态方法
类型转换

valueOf(int d)
返回 int 参数的字符串表示形式。

该方法有有多个重载方法。能够将不一样基本数据类型转换成字符串形式。

转换成字符串形式后能够调用字符串的方法来操做。

int num = 123;

        String numStr = String.valueOf(num); // 将int类型的数字转换成字符串
        char c = numStr.charAt(0); // 获取第一个数字
        System.out.println(c); // 1

格式化字符串

format(String format, Object… args)
使用指定的格式字符串和参数返回一个格式化字符串。

格式化某个字符串。

第1个字符串参数是一个字符串,用来格式化后面的字符串。第1个 %s 表明的是第2个字符串参数,第2个 %s 表明的是第3个字符串参数。

String s = String.format("格式化: %s, %s", "aa", "bb");
        System.out.println(s); // 格式化: aa, bb

字符数组转换

copyValueOf(char[] data) 、copyValueOf(char[] data, int offset, int count)
返回指定数组中表示该字符序列的 String。

字符数组转换成字符串。能够设置起始偏移量(开始位置)和个数。

char[] chars = {'a', 'b', 'c', 'd', 'e'};

        String s = String.copyValueOf(chars);
        System.out.println(s); // abcde

        String s2 = String.copyValueOf(chars, 0, 3);
        System.out.println(s2); // abc

相关

【Java 经常使用类】大纲