java中String类的使用(均摘自《java语言程序设计》)
文章目录
一,字符串的简单使用
功能 | 方法 |
---|---|
获得字符串长度: | s.length(); |
返回指定位置的字符: | s.charAt(index); |
连接两个字符串法1: | s1.concat(s2) |
连接两个字符串法2: | s3 = s1 + s2 |
将所有字符大写: | s.toUpperCase() |
将所有字符小写: | s.toLowerCase() |
去掉字符串两端的空格: | s.trim() |
提取字符串从begin下标到结尾的子串: | s.substring(int begin) |
提取字符串从begin下标到end-1下标的子串: | s.substring(int begin, int end) |
二,String对象的比较方法及子串判断
功能 | 方法 |
---|---|
直接比较,返回布尔值: | s1.equals(s2) |
不区分大小写比较,返回布尔值: | s1.equasIgnoreCase(s2) |
直接比较,返回整型 | s1.compareTo(s2) |
不区分大小写比较,返回整型: | s1.compareToIgnoreCase(s2) |
判断s1中是否有特定前缀s2,返回布尔值: | s1.startsWith(s2) |
判断s1中是否有特定后缀s2,返回布尔值: | s1.endsWith(s2) |
判断s2是否为s1的子字符串,返回布尔值: | s1.contains(s2) |
compareTo()的返回值说明:s1.compareTo(s2)
1,若s1和s2相等,则返回0;
2,若 s1 小于 s2,比如 s1 为 “abc”,s2 为 “abg”,因为 ‘c’ 和 ‘g’ 相差 4,所以结果返回 -4。
3,若 s1 大于 s2, 比如 s1 为 “abd”,s2 为 “aba”,因为 ‘d’ 和 ‘a’ 相差 3,所以结果返回 3。
三,获取字符串中的字符下标或者子串下标
功能 | 方法 |
---|---|
返回字符串中出现的第一个ch的下标。如果没有匹配的,返回-1 | s.indexOf(ch) |
返回字符串中fromlndex之后出现的第一个ch的下标:如果没有匹配 的,返回-1 | s.indexOf(ch, fromlndex) |
返回字符串中出现的第一个字符串s1的下标。如果没有匹配的,返问-1 | s.indexOf(s1) |
返回字符串中fromlndex之后出现的第一个字符串s1的下标,如果没有匹配的,返回-1 | s.indexOf(s1, fromlndex) |
返回字符串中出现的最后一个ch的下标。如果没有匹配的,返回-1 | s.lastlndexOf(ch) |
返回字符串中fromlndex之前出现的最后一个ch的下标。如果没有匹配的,返回-1 | lastIndexOf(ch, fromlndex) |
返回字符串中出现的最后一个字符串s1的下标。如果没有匹配的,返回-1 | s.lastlndexOf(s1) |
返回字符串中fromlndex之前出现的最后一个字符串s1的下标。如果没有匹配的,返回-1 | s.lastIndexOf(s1, fromlndex) |
四,字符串的替换和分隔
|
功能 | 方法 |
---|---|
将字符串中所有四配的字符替换成新的字符,然后返回新的字符串 | replace(oldChar, newChar) |
将字符串中第一个匹配的子字符串替换成新的子字符串,然后返回新的字符串 | replaceFirst(oldString, newString) |
将字符串中所有匹配的子字符串替换成新的子字符串,然后返回新的字符串 | replaceAll(oldString, newString) |
返回–个字符串数组,其中包含被分隔符分隔的子字符串集 | split(delimiter) |
对split()的功能说明:
String[] tokens = “Java,C?C#,C++”.split("[. , : ;?]")
split()括号里使用了正则表达式,是指匹配 .、,、:、;、?这五个字符,将这五个字符设为分隔符,所以 tokens 数组中四个位置存储的字符串分别为 Java、 C、 C# 和 C++。
若要以空格为间隔,则可以使用 str.split(" +")或str.split("\s+"),第二种可以将用tab键得来的空格也作为分隔标志,要更好。
五,依照模式匹配、替换和分割
通过使用正则表达式来匹配、替换和分割一个字符串。
1,正则表达式匹配方法matches()
"Java".matches("Java");
"Java is fun".matches("Java");
"Java is cool".matches("Java");
"Java hello".matches("Java");
//以上四个例子均返回true
这里的 “Java.*” 是一个正则表达式,表示以 “Java” 开头,后面紧跟着 0 个或多个字符。
String s = "420-02-4534";
s.matches("\\d{3}-\\d{2}-\\d{4}");
String a = "420=54!5465";
a.matches("\\d{3}=\\d{2}!\\d{4}");
//以上两个例子均返回true,其中,\\d表示单个数字位, \\d{3}表示三个数字位
注意,上面两个例子中分隔符分别为 “-” 和 “=”,但并非所有的符号都可以用作分隔符,如$、^、*、(、)等符号就不能用作分隔符,否则会报错或返回false。
2,正则表达式替换方法
可以将 replaceAll 、replaceFirst 和正则表达式结合在一起。
String s = "a+b$#c".replaceAll("[$+#]", "NNN");
System.out.print(s);
//输出为aNNNbNNNNNNc
上例中的 [$+#] 会匹配字符串中的 $、+、#,将这些字符全部替换为 “NNN”。
3,正则表达式分割方法
见第四条。
六,字符串与字符数组之间的转换。
1,字符串转换为字符数组
(1)使用toCharArray()方法:
char[] chars = "Java".toCharArray();
(2)使用getChars(int sBegin, int sEnd, char[] dst, int dstBegin)方法:
将字符串 s 中从 sBegin 到 sEnd - 1的字串复制到字符数组 dst 中从下标 dstBegin 开始的位置。
char[] dst = {'J','A','V','A','1','3','0','1'};
"CS3720".getChars(2,6,dst,4);
//dst现在变为{'J','A','V','A','3','7','2','0'}
2,字符数组转换为字符串
(1)使用构造方法 String(char[])
char[] dst = {'J','A','V','A','1','3','0','1'};
String s = new String(dst);
(2)使用 valueOf() 方法
char[] dst = {'J','A','V','A','1','3','0','1'};
String s = String.valueOf(dst);