字符串的常用方法
第一部分:
- isEmpty() 字符串是否长度为0
- isBlank() 字符串是否为空(包含空包字符)
- charAt(index) 获取指定索引位置的字符
- codePointAt(index) 获取索引位置的字符码【JDK15】
- getBytes(charset) 将字符串按指定编码转为流
- new String()将流转为字符串‘()内是流’
第二部分:
- equals(obj)/equalsIgnoreCase() 判断两个字符串是否相等/忽略大小写,判断两个字符串是否相等
- compareTo() 判断字符串的大小
>0
前者大于后者- =0 两个字符串相等
- <0 后者大于前者
第三部分:
- startsWith(str)/endsWitch(str) 判断字符串是否以…开头/结尾
- contains(str) 是否包含某个指定的字串
- indexOf(str)/lastIndexOf(str) 搜索str在字符串中第一次出现的索引位置,分别从 左/右 开始找,若未找到返回 -1
第四部分:
- substring(offset,endIndex) 从字符串指定位置截取字符串,截取到指定位置,不包含endIndex对应的字符
- 截取长度 = endIndex - offset
- endIndex 超出字符串的最大长度则抛出异常
- endIndex 不传,则代表截取到尾部
- endIndex < 0 ,则抛出异常
- replace(oldstr,newstr)
- replaceAll(regex,newstr) 替换全部满足条件字符串
- replaceFirst(regex,newstr) 替换第一个匹配的字符串(regex代表正则表达式)
- split(regex,max=0) 拆分字符串,max允许拆分的最大次数,如果不设置,或者设置为<=0,代表 全部拆分
第五部分:
- toLowerCase()/toUpperCase() 字符串 转为 小写/大写
- trim() 方法移除字符串两侧的空白字符(空格、tab键、换行符)
- trim()方法无法删除掉Unicode空白字符
- 但是Character.is.Whitespace©方法可以判断出来
- strip() 可以去掉 Unicode空白字符
- repeat(n) 重复N次【JDK11】
了解部分:
- toCharAraay() 转为字符数组
- concat(str) 连接字符串,相当于+(了解即可)
- matches(regex) 是否匹配某个正则【JDK14】
案例一
isEmpty(),isBlank(),charAt(),codePointAt(),getBytes()
// 创建一个空的字符串
String str = "abc";
// null 发生空指针异常
// 字符串长度是否为0
System.out.println(str.isEmpty());
// 字符串是否为空(包含空包字符)
System.out.println("str.isBlank() = " + str.isBlank());
// 获取索引位置的字符
char c = str.charAt(1);
System.out.println(c);
// 获取索引位置的字符码
int i = str.codePointAt(1);
System.out.println(i);
//将字符串转为流;byte[] 在java中,通常表示 流
byte[] bytes = str.getBytes();
System.out.println(Arrays.toString(bytes));
// 将流转为字符串
String s = new String(bytes);
System.out.println(s);
案例二
equals(),equalsIgnoreCase(),compareTo()
String str = "hello world";
String str2 = new String("Hello world");
System.out.println("地址是否相等:" + (str == str2));
System.out.println("内容是否相等:" + str.equals(str2));
/*
如果 比较 两个字符串的时候,其中一个 字符串是 字面量。
那么在比较的时候
null 代表 什么都没有,不能 调用 方法(非静态方法),因为 会产生所谓的空指针异常
空指针异常 产生的原因:
null 调用 equals
*/
/*
String str3 = null;
System.out.println(str3.equals(str));
// 报错:空指针异常
*/
System.out.println("忽略大小写比较内容是否相等:" + str.equalsIgnoreCase(str2));
String s1 = "hello";
String s2 = "world";
// 比较 s1 与 s2 谁更大
int i = s1.compareTo(s2);
System.out.println(i);
/*
两个字符串,在比较大小的时候,是采用 逐个字符进行 Unicode编码的比较
如果 返回 > 0,则 代表 前者 比 后者 大
如果 返回 0 ,则代表两者一样大
如果 返回 < 0,则代表 后者 比 前者 大
*/
String s3 = "中国";// “中” 20013
String s4 = "日本";// “日” 26085
// 获取索引位置的字符码
System.out.println(s4.codePointAt(0));
System.out.println(s3.compareTo(s4));
案例三
startsWith(),endsWith(),contains(),indexOf(),lastIndexOf()
String str = "13566237832";
//判断字符串是否以...开头/结尾
System.out.println(str.startsWith("135"));
System.out.println(str.endsWith("7832"));
// 判断 是否包含 ...
System.out.println(str.contains("32"));
// 判断字符串 ... 第一次出现的索引位置(从0开始)
// 如果不存在,显示 -1
int i = str.indexOf("238");
System.out.println(i);
// 从右检索,第一次出现的索引位置,若未找到 显示 -1
int n = str.lastIndexOf("3");
System.out.println(n);
案例四
substring(),replace(),replaceFirst(),split()
String str = "12312341234";
// 获取前三位
String prefix = str.substring(0, 3);
System.out.println(prefix);
// 截取 后四位
String substring = str.substring(str.length() - 4);
//String substring1 = str.substring(7, 11);
System.out.println(substring);
// 将手机号中间四位隐藏
// 获取中间四位
String middle = str.substring(0, 3);
System.out.println(middle);
// 使用 replace 方法替换。有Bug ,会替换所有相同的。
String newstr = str.replace(middle, "****");
// replaceFirst 替换第一个符合要求的内容
String newstr2 = str.replaceFirst(middle, "****");
System.out.println(newstr2);
//--------------
String text = "ztb:zhangsan:你:好";
// 通过 : 进行 分割字符串
String[] split = text.split(":");
System.out.println(split);
案例五
toUpperCase(),toLowerCase(),trim(),strip(),repeat()
// 请求方式 GET,POST
String type = "get";
if("GET".equals(type.toUpperCase())){
System.out.println("请求方式GET");
}
String s = "asdasd";
if(!s.toLowerCase().equals(s)){
System.out.println("包含大写字母");
}
char t = 0;
String xx = "abc" + t;
System.out.println(xx.trim().length());
System.out.println(xx.strip());
// 2 + 22 + 222 + 2222 + 22222
// repeat 重复 多少次
String r = "abc";
System.out.println(r.repeat(3));
/*String.valueOf()*/