今天在写代码的时候,需要对String进行一些操作,例如变小写,去除所有空格
于是熟练的使用String的replaceAll,却发现没这个方法。
后面才发现Kotlin使用的是自己的String,有自己的方法,用String的replace(" ","")方法也可以替换里面所有的空格。
既然用到了,就寻思总结一下,这儿主要Kotlin的String方法,和Java的其实大差不差。
1.去除所有空格
" c h i n a ".replace(" ", "") //输出china,去除所有空格
2.去除开头结尾的空格
" c h i n a ".trim()//输出c h i n a;
3.内容替换
println("acdb and fff".replace("[abcd]".toRegex(), "y") )//yyyy yny fff println("acdb and aaa".replace(Regex("[abcd]"), "y") )//yyyy yny yyy
4.移除操作
println("123456".removeRange(0..2))//输出456 println("123456".removeRange(0,2))//3456 参数 (开始位置,结束位置)
5.比较
println("123456".compareTo("123a"))//输出-45 println("123A456".compareTo("123A",true))//输出-13 忽略大小写操作
compareTo方法是字符串与对象进行比较。按字典顺序比较两个字符串。返回值是整型,它是比较对应字符的大小(ASCLL码顺序),如果第一个字符和参数的第一个字符不等,结束比较,返回他们之间的长度差值,如果第一个字符和参数的第一个字符相等,则以第二个字符和参数的第二个字符做比较,以此类推,直至比较的字符或被比较的字符有一方结束。
如果参数字符串等于此字符串,则返回值0;
如果此字符串小于字符串参数,则返回一个小于0的值
如果此字符串大于字符串参数,则返回一个大于0的值
6.相等equls
val a = "123" val b = "123" println("123".equals(a)) //true println(b.equals(a)) //true
1.判断条件:
若当前对象和比较的对象是同一个对象,即return true。也就是Object中的equals方法。
若当前传入的对象是String类型,则比较两个字符串的长度,即value.length的长度。
若长度不相同,则return false
若长度相同,则按照数组value中的每一位进行比较,不同,则返回false。若每一位都相同,则返回true。
若当前传入的对象不是String类型,则直接返回false
2.Object.equals与String.equals的区别:
Object.equals(==):比较内存地址,内存地址相同,说明是同一个对象; String.equals: 比较内容即可,不管内存地址。 总结: Object.equals相等,说明引用是同一个对象,那么String.equals一定相等; String.equals相等,只是说明字面值相等,不一定是同一个对象,所以Object.equals不一定相等。
3.源码
Object作为String的父类,因为String重写了equals方法,所以,在String中,内容相同也返回true。object中是直接判断对象,返回true/false,string中,先判断是否是同一对象,不是则又去判断长度,再去一一比对值,源码很简单,可以去看一下。
先总结几个常用的,很基础,后面用到其他的,看了源码再来总结