字符串包含关系
String a ="hello world";
String b ="world";
.contains()b是a的字符串字串/子字符串
a就包含b
String a="hello world";
String b="world";
System.out.println(a.contains(b));
结果true 证明包含
String a="hello world";
String b="worldd";
System.out.println(a.contains(b));
结果false证明不包含
indexOf()从头查找指定字符串的位置下表从0开始,如果查到了返回位置的索引,查不到返回-1(返回的是第一个内容的下标)
String a="hello world";
String b="world";
System.out.println(a.indexOf(b));
这里的结果是6
返回字符串中所有相同字段的下标依然采用indexOf()方法只是参数上略有不同(这里采用两个相同字段的方式展示这种思路,如果字段过多,字符串过长可以采用循环的方式)
String a="hello world world";
String b="world";
int result=a.indexOf(b);
System.out.println(a.indexOf(b));
result =a.indexOf(b,result+1);
System.out.println(result);
结果为6 12
.lastIndexOf()由后向前查找字符串内容还可表示从指定位置向前查找
.startsWith()从指定位置判断是否以指定字符串开头
.endsWith()判断是否以指定字符结尾
.startsWith()、startsWith() 通常用于判定协议类型和文件类型
字符串替换
由于String是不可变换对象,针对字符串的替换操作,并没有修改字符串自身,而是生成了新的字符串
String a="hello world world";
String b="world";
String str=a.replaceAll(b,"java");
System.out.println(str);
String str2=a.replaceFirst(b,"java");
System.out.println(str2);
System.out.println(a);
hello java java
hello java world
hello world world
replaceAll()是替换所有的内容而.replaceFirst()是替换第一个内容
String regex 正则表达式
正则表达式:使用一些特殊的字符来表示某些字符串的筛选标准
l例如包含某些字符,以xxx开头以xxx结尾xxx重复出现n次…
字符串的切分/拆分
按照一定的分隔符,把字符串分成几个部分,把这些部分放到一个数组中去。
通过.split()来拆分字符串
String a="hello world java";
String[] s= a.split(" ");
System.out.println(Arrays.toString(s));
用处比较多的地方就是日志
合并字符串
在java中直接用+就可以合并,有些语言库中还存与split()对立的join()来实现拼接合并
正则表达式中有许多特殊含义‘.’也是其中之一解决这个问题需要使用正则表达式中转义字符
正则表达式遇到一个.当作特殊符号来对待
正则表达式对.当作.来看待
而java又把\当作java的转义字符来看待,为了表示原始的\需要再次转义则为
”\.“
例(IP地址)
两次转义一次java一次正则转义
String a="192.168.0.1";
String[] b=a.split("\\.");
System.out.println(Arrays.toString(b));
输出结果
[192, 168, 0, 1]
字符串截取
//[beg,end)
String a="Hello world java";
System.out.println(a.substring(6,11));
取消空白字符
String a=" Hello world java \n ";
System.out.println("["+a.trim()+"]");
[Hello world java]
这里可以看到两边的空白字符都被删除了
字符串内部大小写转换
String a="hello";
String b="HELLO";
System.out.println(b.toLowerCase());
System.out.println(a.toUpperCase());
大写转小写toLowerCase()
小写转大写.toUpperCase()
hello
HELLO
字符串判空
isEmty()
判断的是空字符串和空引用无关
StringBuffer和StringBuilder
直接用String拼接字符串,效率很低
使用StringBuilder调用append就是直接把参数拼接到原来内存的末尾
不必担心append拼接的内容过多,StringBuilder会自动扩容
直接修改本身
删除操作
这里的2,4是不包括2和4对应的元素本身的
插入操作
从第二个元素后插入新的字符串
StringBuilder和StringBuffer核心区别
StringBuilder线程不安全
StringBuffer线程安全(使用同步处理所以安全)