字符串
轉(zhuǎn)義字符串
| 函數(shù) | 描述 |
|---|---|
| \t | tab鍵 |
| \b | 回退鍵 |
| \n | 換行 |
| \r | 回車 |
| \" | 雙引號(hào) |
| \' | 單引號(hào) |
| \\ | 反斜杠 |
| \$ | 美元符號(hào) |
| \u | unicode字符 |
字符串
// 使用substring 截取字符串
fun placeOrder(){
val TAVERN_NAME = "Taernyl's Foolly"
val indexOfApostorephe = TAVERN_NAME.indexOf('\'')
val travernMaster = TAVERN_NAME.substring(0 until indexOfApostorephe)
println("madrigal speak with $travernMaster")
}
placeOrder()
//使用split 分割字符串
fun splitOrder(){
val order = "shandy,drangon's breath ,5.91"
val data = order.split(',') // data為list類型
println("type:${data[0]} name:${data[1]} price:${data[2]}")
//結(jié)構(gòu)賦值
val(type , name , price) = order.split(',')
println("type:$type name:$name price:$price")
}
splitOrder()
// replace 普通替換 與正則替換
// 使用replace 替換字符串
fun replaceStr(name:String) : String{
return name.replace('a','b');
}
// 使用relpace 正則替換
fun replaceStrReg(name:String) :String {
return name.replace(Regex("[a]")){
when(it.value){
"a" -> "b"
else -> it.value
}
};
}
println(replaceStr("aabbcc123"))
println(replaceStrReg("aabbcc123"))
//字符串比較與遍歷
//字符串比較
var name1 = "aaa"
var name2 = "aaa"
println(name1 == name2) //值比較 true
println(name1 === name2) // 內(nèi)存地址比較 true
var c = String(listOf<Char>('a', 'b').toCharArray())
var d = "ab"
println("c=$c d=$d c===d ${c === d}") // 內(nèi)存地址比較 false
//unicode
println("unicode:" + '\u0950')
//遍歷字符串
"bhb".forEach {
println(it)
}
// string int double 轉(zhuǎn)換
//string轉(zhuǎn)數(shù)值類型
val gold = "1.1".toDouble();
println(gold)
// int 轉(zhuǎn) double
val money = 99 ;
var intmoney = 99/100 ;
var floatmoney = 99/100.0 ;
println(" $intmoney $floatmoney")
//double 格式化
var doubleMoney = 1.111112222333
var formatMoney = "%.2f".format(doubleMoney)
println("$doubleMoney $formatMoney")
//double 轉(zhuǎn) int
var doubleMoney2 = 1.9911112222333
println(doubleMoney2.roundToInt()) //四舍五入
println(doubleMoney2.toInt()) //上取整
標(biāo)準(zhǔn)函數(shù)庫(kù)
| 函數(shù) | 是否傳receiver值給lambda | 是否有相關(guān)作用域 | 返回 |
|---|---|---|---|
| let | 是 | 否 | lambda結(jié)果 |
| apply | 否 | 是 | 接收者對(duì)象 |
| run | 否 | 是 | lambda結(jié)果 |
| with | 否 | 是 | lambda結(jié)果 |
| also | 是 | 否 | 接收者對(duì)象 |
| takeIf | 是 | 否 | 可空類型接收者對(duì)象 |
| takeUnless | 是 | 否 | 可空類型接收者對(duì)象 |
標(biāo)準(zhǔn)函數(shù)庫(kù) apply run with let also takeIf takeUnless
list 與 set
只讀List 可變 MutableList MutableList的函數(shù)
| 函數(shù) | 描述 |
|---|---|
| [index]= | 設(shè)置指定位置的值 越界會(huì)拋出異常 |
| add | 在列表尾部添加元素 |
| add(index,value) | 在指定位置添加元素 |
| addall | 向列表中添加同一類型列表中的全部元素 |
| += | 添加一個(gè)新元素或者新集合到列表中 |
| -= | 刪除列表中某個(gè)元素或從列表中刪除集合所列元素 |
| clear | 刪除所有元素 |
| removeeIf | 基于lambda表達(dá)式指定的條件刪除元素 |
list基本用法
//創(chuàng)建list 并賦初始值 中間<>稱為泛型 限制了類型
var patronList:List<String> = listOf("aa","bb","cc")
println(patronList) // [aa, bb, cc]
// 獲取list元素
println("${patronList[0]} ${patronList[1]} ${patronList[2]}" )
// 超出角標(biāo)會(huì)拋出異常
// patronList[4] ArrayIndexOutOfBoundsException
// 越界取值 getOrElse
println(patronList.getOrElse(4){"default 4"})
// getOrNull
println(patronList.getOrNull(4)?:"default null 4")
// 判斷l(xiāng)ist 是否包含某個(gè)值 contains
println("list is contain aa ${patronList.contains("aa")}")
println("list is contain dd ${patronList.contains("dd")}")
//判斷l(xiāng)ist 是否包含list
println("list is contain aa bb ${patronList.containsAll(listOf("aa","bb"))}")
println("list is contain aa cc ${patronList.containsAll(listOf("aa","cc"))}")
println("list is contain aa dd ${patronList.containsAll(listOf("aa","dd"))}")
// 刪除、添加、修改 list創(chuàng)建的是只讀列表 不能修改
// 需要可變列表可以使用 mutableListOf
var mutableList = mutableListOf("aa","bb","cc")
mutableList.add("dd")
mutableList.remove("aa")
mutableList.remove("ee")
mutableList.add(0 , "oo")
mutableList[3] = "33"
println(mutableList)
//遍歷
for (item in mutableList){
println("in 遍歷 $item")
}
mutableList.forEach {
println("each 遍歷 $it")
}
// 遍歷每一個(gè)元素的值和位置
mutableList.forEachIndexed { index, s ->
println("$s you are in $index")
}
//解構(gòu) 把list元素內(nèi)的值 依次賦值給對(duì)應(yīng)位置的變量
var (name1,name2,name3) = listOf<String>("aa","bb","cc")
println("name1=$name1")
// 隨機(jī)排列
var menuList = listOf<String>("aa","bb","cc")
println("random first == ${menuList.shuffled().first()}" )
只讀set 可變 MutableSet MutableSet的函數(shù)
| 函數(shù) | 描述 |
|---|---|
| add | 添加元素 |
| addAll | 添加另一個(gè)集合中的所有元素 |
| += | 添加一個(gè)或多個(gè)元素 |
| -= | 刪除一個(gè)或多個(gè)元素 |
| remove | 刪除某個(gè)元素 |
| removeAll | 刪除另一個(gè)集合中的所有元素 |
| clear | 刪除所有元素 |
// set集合
// set會(huì)自動(dòng)去重
val planets = setOf<String>("aa","bb","cc","aa","bb","cc" )
println(planets)
//是否包含某個(gè)值
println(planets.contains("aa"))
// 獲取set的 第三個(gè)元素
println(planets.elementAt(2))
// set只讀 需要可以改變的set可以使用 mutableSetOf
val addSet = mutableSetOf("aa" , "bb" , "cc")
println(addSet)
addSet += "dd"
println(addSet)
//while 循環(huán)與 break
//數(shù)組隨機(jī)排列取第一個(gè)元素 如果滿足條件就使用break提前結(jié)束 最多循環(huán)3次
var namelist = listOf<String>( "aa","bb","cc","dd","ee")
var orderCount = 0 ;
var targetName :String? = null
while (orderCount < 3){
orderCount++
var name = namelist.shuffled().first()
if(name == "ee"){
targetName = name
break
}
}
println("遍歷了$orderCount 次 最終找到了name: $targetName")
// 集合轉(zhuǎn)換
// 使用toSet與toList函數(shù) 或者toMutableList 和 toMutableSet 可以實(shí)現(xiàn)list 和set 的相互轉(zhuǎn)換
// 一個(gè)小技巧: 調(diào)用toSet去掉list集合里的重復(fù)元素
var changeSet = listOf("aa","bb","cc","aa").toSet()
println(changeSet)
var changeList = changeSet.toList()
println(changeList)
//kotlin封裝了函數(shù) distinct 先調(diào)用toSet在調(diào)用toList
var parotns = listOf("aa","bb","cc","aa").distinct()
println(parotns)
println(parotns[0])
//數(shù)組類型
// kotlin 本身不建議使用 但是如果需要調(diào)用一個(gè)java方法 java方法的入?yún)⑹且粋€(gè)數(shù)組類型
val ages = intArrayOf(1,2,3,4,5)
| 數(shù)組類型 | 創(chuàng)建函數(shù) |
|---|---|
| IntArray | intArrayOf |
| DoubleArray | doubleArrayOf |
| LongArray | longArrayOf |
| ShortArray | shortArrayOf |
| ByteArray | byteArrayOf |
| FloatArray | floatArrayOf |
| BooleanArray | booleanArrayOf |
| Array object | arrayOf |