1. 字符串长度和遍历字符串
字符串封装了一个长度不可变的char数组 每个char字符都存储是Unicode编码 字符串的长度,就是其存储的char字符个数 String提供length()方法可以获取字符串的长度,也就是字符的个数,中文和英文都是一个字符
注意 :字符的长度是str.length()方法,数组长度是属性arr.length length()方法和charAt()方法配合可以用于字符串中字符的遍历 char c = str.charAt(0); 获取字符串中指定位置的字符 String str = "您好Java" ;
int n = str. length ( ) ;
System. out. println ( n) ;
char c = str. charAt ( 0 ) ;
System. out. println ( c) ;
for ( int i = 0 ; i < str. length ( ) ; i++ ) {
char ch = str. charAt ( i) ;
System. out. println ( ( int ) ch) ;
}
2. 查找字符串在一个目标字符串中的位置
String str = "那年我去了他们家,他说:我去" ;
int index = str. indexOf ( "我去" ) ;
System. out. println ( index) ;
int index1 = str. indexOf ( "你好" ) ;
System. out. println ( index1) ;
int index2 = str. indexOf ( "我去" , 3 ) ;
System. out. println ( index2) ;
int index3 = str. lastIndexOf ( "我去" ) ;
System. out. println ( index3) ;
3. 截取字符串
截取子字符串 String url = "http://silee.club/index.html" ;
String host = url. substring ( 7 , 17 ) ;
String name = url. substring ( 7 , 7 + 5 ) ;
System. out. println ( host) ;
System. out. println ( name) ;
String file = url. substring ( 18 ) ;
System. out. println ( file) ;
案例:动态截取任意URL中的主机名
url = "http://sina.com/index.html" ;
int i = url. indexOf ( "/" , 7 ) ;
System. out. println ( i) ;
String s = url. substring ( 7 , i) ;
System. out. println ( s) ;
4. 去除字符串两端的空白
去除字符串两端的空白(编码小于等于32的字符) 如果原字符串前后有空白,则返回新字符串;如果前后没有空白,则返回原字符串 String str = " \n silee.club \r \t " ;
System. out. println ( str. length ( ) ) ;
String s = str. trim ( ) ;
System. out. println ( s) ;
System. out. println ( s. length ( ) ) ;
System. out. println ( str == s) ;
5. 检查字符串是否以指定字符串开头
检查字符串是否以指定字符串开头 String str = "今天你吃了吗?" ;
boolean b = str. startsWith ( "今天" ) ;
System. out. println ( b) ;
b = str. startsWith ( "明天" ) ;
System. out. println ( b) ;
b = str. startsWith ( "" ) ;
System. out. println ( b) ;
案例:
检查一个文件是否为 png 图片(后缀为.png) String file = "demo.docx" ;
if ( file. endsWith ( ".png" ) ) {
System. out. println ( "是图片文件" ) ;
} else {
System. out. println ( "这不是图片文件" ) ;
}
检查是否为加密安全通讯(https://开头) String url = "https://tedu.cn/index.html" ;
if ( url. startsWith ( "https://" ) ) {
System. out. println ( "这是加密安全通讯" ) ;
} else {
System. out. println ( "这不是加密安全通讯" ) ;
}
6. 转换字符串的大小写
转换字符串的大小写 String str = "您好Java" ;
String s = str. toUpperCase ( ) ;
System. out. println ( s) ;
System. out. println ( str == s) ;
str = "您好JAVA" ;
s = str. toUpperCase ( ) ;
System. out. println ( s) ;
System. out. println ( str== s) ;
案例:不区分大小写比较文件的后缀 String file = "DCIM.Png" ;
if ( file. toLowerCase ( ) . endsWith ( ".png" ) ) {
System. out. println ( "这是图片" ) ;
} else {
System. out. println ( "上载错误" ) ;
}
7. 可变字符串 StringBuilder
其内部的字符数组初始容量为16,后续的操作都可以对这个数组内容进行修改,当容量不够时候会自动扩容,扩容规则为 1倍+2 。 StringBuilder 性能好于 String ,如果有复杂的字符串连接等操作时候,使用 StringBuilder完成。 StringBuilder buf = new StringBuilder ( ) ;
int n = buf. capacity ( ) ;
System. out. println ( n) ;
buf. append ( "小哥哥" ) ;
buf. append ( "在今天早晨出家门的时候" ) ;
n = buf. capacity ( ) ;
System. out. println ( n) ;
buf. append ( "天还没" )
. append ( "亮" )
. append ( "呢" )
. delete ( 1 , 1 + 2 )
. insert ( 1 , "美女" ) ;
n = buf. capacity ( ) ;
System. out. println ( n) ;
System. out. println ( buf) ;
8. 字符串与正则表达式
boolean matches(String regex) ,使用给定的正则表达式判断当前字符串是否符合格式要求 String email = "sileeLiu@silee.club" ;
String regex = "[a-zA-Z0-9]+@[a-zA-Z0-9]+(\\.[a-zA-Z]+)+" ;
boolean match = email. matches ( regex) ;
if ( match) {
System. out. println ( "是邮箱" ) ;
} else {
System. out. println ( "不是邮箱" ) ;
}
String[] split(regex) 将当前字符串按照正则表达式部分进行拆分,并返回拆分后的每段内容
String str = "jsd82mssd0j2c8ndc9v1" ;
String[ ] arr = str. split ( "[0-9]+" ) ;
System. out. println ( arr. length) ;
System. out. println ( Arrays. toString ( arr) ) ;
String imageName = "silee.png" ;
String[ ] names = imageName. split ( "\\." ) ;
System. out. println ( Arrays. toString ( names) ) ;
imageName = System. currentTimeMillis ( ) + ".png" ;
System. out. println ( imageName) ;
names = imageName. split ( "\\." ) ;
long time = Long. parseLong ( names[ 0 ] ) ;
System. out. println ( new Date ( time) ) ;
String replaceAll(String regex, String str) 将当前字符串中满足正则表达式的部分替换为给定字符串
String str = "jdsfwef28793jfdm928jd3fe54g" ;
str = str. replaceAll ( "[0-9]+" , "#NUMBER#" ) ;
System. out. println ( str) ;