String字符串类很是重要,同时他也要有不少方法。推荐把String字符串中经常使用的方法都用的很熟练。这样能够帮你节省不少处理字符串的时间。java
对于字符串处理我很是推荐去学习一下正则表达式,他很是的强大,在处理字符串很是有用。web
正则表达式学习请点击:【正则表达式】总结正则表达式
String 类表明字符串。Java 程序中的全部字符串字面值(如 “abc” )都做为此类的实例实现。 数组
public class BigDecimal extends Number implements Comparable<BigDecimal>
使用字面量和使用构造器建立字符串是同样的。svg
String s = "str"; String s2 = new String("str");
将某个字符串的编码进行转换。(记得要抛出一个异常)学习
String s = "str"; // 将字符串s变成字节数组 byte[] bytes = s.getBytes(); // 将字节数组bytes的编码格式变成utf-8 String s2 = new String(bytes, "UTF-8"); System.out.println(s2); // str
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
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
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);
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