1.字符串拆分
可以把一个完整的字符串按照规定的分隔符拆分为若干个子字符串
String[] split(String regex)
将字符串全部拆分
String[] split(String regex,int limit)
将字符串以指定的格式拆分,拆分成limit组
实例:字符串的拆分处理
public class Main4 {public static void main(String[] args) {String str = "Hello world xiaoli ser";//按照空格拆分字符串String[] result = str.split(" ");for(String s : result){System.out.println(s);}}
}
实例:字符串的部分拆分
public class Main5 {public static void main(String[] args) {String str = "Hello World xiao li xiansheng";String[] result = str.split(" ",3);for(String s: result){System.out.println(s);}}
}
".split(regex,limit)"其中的regex是分隔符的形式,limit是要拆分成几段
有一些特殊字符作为分割符无法正确拆分,需要加上转义
比如拆分ip地址
public class Main6 {public static void main(String[] args) {String s = "192.168.1.1";String[] result = s.split("\\.");for(String str : result){System.out.println(str);}}
}
注意事项:
1.字符"|","*","+"都得加上转义字符,前面加上"\\"
2.而如果是"\",那么就得写成"\\\\"
3.如果一个字符串中有多个分割符,可以用"|"作为连字符.
实例:多次拆分
public class Main7 {public void toString(String[] arr){System.out.println(arr);}public static void main(String[] args) {String str = "name=zhangsan&age=18";String[] result = str.split("&");for(int i = 0;i<result.length;i++){String[] temp = result[i].split("=");System.out.println(temp[0]+"="+temp[1]);}}
}
2.字符串截取
方法
String substring(int beginlndex)
从指定索引到结尾
String substring(int begindex,int endindex)
截取部分字符串
public class Main {public static void main(String[] args) {String str = "Hello World";System.out.println(str.substring(6));System.out.println(str.substring(0,4));String s1 = str.substring(0,4);String s2 = str.substring(6);System.out.println(s1+s2);}
}
注意事项:
1.字符串中得索引与数组中的下标是一样的,都是从0开始
2.substring(0,5)其中的0与5是[0,5)是前闭后开的也就是说是不包含5的
3.去掉字符串中的左右空格,保留中间的空格
public class Main2 {public static void main(String[] args){String str = " hello world ";System.out.println("["+str+"]");System.out.println("["+str.trim()+"]");}
}
tirm()会去掉首尾的所有空白字符串(空格,换行,制表符等)
4.字符串大小写转换
public class Main3 {public static void main(String[] args) {String str = "HeLLo WorlD *&%$ 你好";//把所有的大写的英文字符转成小写System.out.println(str.toLowerCase());//把所有的小写的英文字符转成大写System.out.println(str.toUpperCase());}
}
5.字符串的不可变性
String是一种不可变的对象,字符串中的内容是不可以被改变的
6.字符串修改
注意的是:尽量避免对String类型直接进行修改,因为String类是不能修改的,所有的修改都会创建新对象,效率非常低下.
public class Mainstream {public static void main(String[] args) {String str = "hello";str+="world";System.out.println(str);}
}
public class Mainstream {public static void main(String[] args) {long startTime = System.currentTimeMillis();String s = "hello";for(int i = 0;i<10_0000;i++){s+=i;}long endTime = System.currentTimeMillis();System.out.println(endTime - startTime);}
}
//10万次加法计算时间用了17017ms
public class Main4 {public static void main(String[] args) {long startTime = System.currentTimeMillis();StringBuilder stringBuilder = new StringBuilder("hello");for(int i = 0;i<100_0000;i++){stringBuilder.append(i);}long endTime = System.currentTimeMillis();long elapsedTime = endTime - startTime;System.out.println(elapsedTime);}
}
//100万次加法计算时间用了21ms
通过上述代码可以看出对String直接修改,效率是非常慢的,因此我们在修改字符串时可以选择StringBuffer或者StringBuilder