kotlin基本語(yǔ)法<二> [字符串、標(biāo)準(zhǔn)函數(shù)庫(kù)、list與set、循環(huán)與集合轉(zhuǎn)換]

字符串

轉(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
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容