String类的有关方法

一、String 类构造方法:


1.  String s = "abc";

2.  String s = new String();   //单纯的String对象。

3.     byte[] b = {65,97,99};    //65='A',97='a',65+25='Z',97+25='z',48='0',48+9='9'
String s = new String(b);    // s = "Aac" ,会根据byte[]中的ASCLL码拿到对应值。
String s = new String(b,0,2);    // s = "Aa",只取b[0]、b[1]。2不包含。可以是int[]


4.     char[] c = {65,'b','c','我'};   // 可以将char[]作为参数. 'a' = (byte)65
        String s = new String(c);     // s = "abc" ,因为65对应为'a'
String s = new String(c,1,2);    // s = "bc",2是包含的。为a[1]、a[2].与byte不同


5. String s = new String(String original);
String s = new String(StringBuffer buffer);
String s = new String(StringBuilder builder);


6. byte[] b = {65,65+32,48};
Charset c = Charset.forName("gbk");  //编码集两种创建方法: = Charset.defaultCharset();
String s = new String(b,c); //输出为 "Aa0"。编码集貌似并没有什么卵用。



二、String 类的相关方法:


String s = "abc123ABC";


1. s.equals(Object obj);  // 直接比较。boolean
2. s.length(); // 返回字符串长度。\r或\n也算一个长度。int
3. s.equalsIgnoreCase(Object obj); //忽略大小写比较。boolean
4. s.substring(0, 3); //截取索引为0-2的字符串,不包括3. String
s.substring(2); //截取索引为2之后的所有字符。 c123ABC。 String
5. s.getBytes(); //返回字符串中每个字符的byte值。如返回的b[0]=97.  byte[]
6. s.charAt(2); //返回索引为2的字符;"c" 。  String
7. s.codePointAt(0); //返回索引为0的字符的ASCLL码。"a" = 97.  int
s.codePointBefore(1)  //返回指定下标之前的一个字符的ASCLL。所以>1。此处97.int
8. s.compareTo("b"); //比较ASCLL。s.ASCII > "b".ASCII ? 正数: 0 or  负数
9. s.concat("000"); //在s的基础上加上"000". String
10. s.contains("xxx"); //是否包含xxx。 boolean
11. s.endswith("xxx"); //是否以xxx结尾。boolean
s.startWith("xxx"); //是否以xxx开头。boolean
12. s.indexOf("b"); //返回"b"在s中第一次出现的下标索引。如此处:1。没有就-1. int
s.indexOf("b",2)  //如果下标2之后没有"b",返回-1.如果有就返回"b"在整个s中的下标。
s.lastIndexOf("a")  //返回s中"a"最后出现时的下标。 没有就返回-1。 int
s.lastIndexOf("a",4) //返回s中下标0-4(包括)中最后一次出现"a"的下标。int
13. s.trim(); //除去字符串s两边的空格。 String
14. s.isEmpty();  //在 s = ""; 的情况下为真返回true。若s=null,会有空指针异常。boolean
15. s.intern(); //"d" == new String("d").intern().若池已经有此字符串,则返回池中的字符串。否则,将此 String 对象添加到池中。 
16. s.matches("regex"); //判断s是否符合正则表达式"regex",符合,返回true。很不错的方法!
17. String s1= “tsinghua” 
String s2=“it is TsingHua”; 
s1.regionMatches(0,s2,6,7); //regionMatches(s1.int,与s2,的6,共比较7个字符)
//最后一个语句表示将s1字符串从第0个字符“t”开始和s2字符串的第6个字符“T”开始逐个比较,共比较7对字符,由于区分大小写,所以结果为false。 
//但如果最后一个语句改为: 
s1.regionMatches(true,0,s2,6,7); //没什么卵用. boolean
//则结果为true,因为入口参数中true表示忽略大小写区别。
18. String.valueOf(obj|char[]);  //将obj转为字符串。如将数值变为字符串。 String
19. s.copyValueOf(char[]|char[],int,int); //将数组转为字符串s。而没有新建对象。
20. s.replace(oldStr,newStr); //将s中的oldStr用newStr代替并返回新字符串。String
21.  s.replaceAll("regex","newStr");  //可以用正则匹配某些字符,然后用newStr替换
        s.replaceAll("(\\w+)regex(\\w+)","$1 $2")  //可以用正则匹配某些字符,然后拿到这些字符。非常有用!谁用谁知道
22. s.replaceFirst("regex","newStr");  //用正则匹配某些字符,然后用newStr替换一次
s.replaceFirst("regex(\\w+)","$1") //用正则匹配某些字符,然后拿到这些字符
23. String.join("_","hello","world"); //用第一个参数'_'将hello与world连接起来。多个都行。String
String.join("_",list); //用左边的'_'将集合中的元素连接起来。 返回String.

24.  String.format("the answer:%s", str);//用str代替左边的 %s; 左边%s个数=右边变量个数。

25.  s.split("a"); //返回一个String数组。此处s.split("a")[0]="",..[1]="b",..[2]="c",..[3]="123ABC"

s.split("a|A"); //通过“a”或者"A"切割。

       s.spilt("a",2);  // 只分割成两段。 s.spilt("a",2)[0]="", s.spilt("a",2)[1]="baca123ABC"

下面这些一般都不会用到。

String.format("结果是:% d", 31);//结果是:& &31   //正值前面加空格。负不加。
String.format("结果是:%3d", 31);//结果是:31& &     //& &代表一个空格
String.format("结果是:%,d", 3100);//结果是:3,100 //,是3位数字多一个逗号
String.format("结果是:%,6d", 3100);//结果是:& &3,100 //不够宽度左边补空格
String.format("结果是:%,-6d", 3100);//结果是:3,100& &  //加-后居左,空格补右
String.format("结果是:%,+-7d", 3100) // +3,100& &  //如果7d前没有-,空格在左边
String.format("结果是:%,07d", 3100) //003,100  //结果用0填充
String.format("结果是:%(d", -31);//结果是:(31)  //负数用括号括起来。不显示-
String.format("结果是:%#o", 31);//结果是:037  //o:8进制,x:16进制 。3*8+7=31
String.format("结果是:%2$3d", 31,41); //结果是:& &41
String.format("结果是:%1$3d%2$ ,d", 3100,4100); //结果是:3100 4,100

猜你喜欢

转载自blog.csdn.net/HelloWorld_In_Java/article/details/53166907