當前位置:
首頁 > 最新 > Kotlin入門(5)字元串及其格式化

Kotlin入門(5)字元串及其格式化

上一篇文章介紹了數組的聲明和操作,包括字元串數組的用法。注意到Kotlin的字元串類也叫String,那麼String在Java和Kotlin中的用法有哪些差異呢?這便是本文所要闡述的內容了。

首先要說明的是String類型與基本變數類型之間的轉換方式,在《Kotlin入門(3)基本變數類型的用法》中,提到基本變數類型可以通過toString方法轉為字元串類型。反過來,字元串類型又該如何轉為基本變數類型?如果使用Java編碼,有以下幾種轉換方式:

字元串轉整型:調用方法Integer.parseInt(***)

字元串轉長整型:調用方法Long.parseLong(***)

字元串轉浮點數:調用方法Float.parseFloat(***)

字元串轉雙精度數:調用方法Double.parseDouble(***)

字元串轉布爾型:調用方法Boolean.parseBoolean(***)

字元串轉字元數組:調用String對象的toCharArray方法

就上面的轉換情況來看,Java的實現方式比較繁瑣,既需要其它類型的類名,有需要其它類型的轉換方法。而在Kotlin這邊,轉換類型相對簡單,並且與基本變數類型之間的轉換保持一致,具體說明如下:

字元串轉整型:調用String對象的toInt方法

字元串轉長整型:調用String對象的toLong方法

字元串轉浮點數:調用String對象的toFloat方法

字元串轉雙精度數:調用String對象的toDouble方法

字元串轉布爾型:調用String對象的toBoolean方法

字元串轉字元數組:調用String對象的toCharArray方法

顯而易見,Kotlin對字元串的類型轉換更友好,也更方便記憶。

當然,轉換類型只是字元串的基本用法,還有更多處理字元串的其他用法,比如查找子串、替換子串、截取指定位置的子串、按特定字元分隔子串等等,在這方面Kotlin基本兼容Java的相關方法。對於查找子串的操作,二者都調用indexOf方法;對於截取指定位置子串的操作,二者都調用substring方法;對於替換子串的操作,二者都調用replace方法;對於按特定字元分隔子串的操作,二者都調用split方法。

下面是Kotlin使用indexOf和substring方法的代碼例子:

var origin_trim:String = origin

if (origin_trim.indexOf( . ) > 0) {

origin_trim = origin_trim.substring(0, origin_trim.indexOf( . ))

}

在這些字元串處理方法裡面,唯一的區別是split方法的返回值,在Java中,split方法返回的是String數組,即String[];但在Kotlin中,split方法返回的是String隊列,即List。下面是Kotlin使用split方法的示例代碼:

btn_split.setOnClickListener {

var strList:List = origin.split(".")

var strResult:String = ""

for (item in strList) {

strResult = strResult + item + ", "

}

tv_convert.text = strResult

}

若想獲取字元串某個位置的字元,這個看似簡單的需求,但Java實現之時卻有點繁瑣,只能調用substring方法去截取指定位置的字元串,如下所示:

String result = origin.substring(number, number+1);

tv_convert.setText(result);

現在使用Kotlin實現上述需求,就簡單多了,因為Kotlin允許直接通過下標訪問指定位置的字元,代碼如下:

tv_convert.text = origin[number].toString()

同時,Kotlin也支持字元串通過get方法獲取指定位置上的字元,代碼如下:

tv_convert.text = origin.get(number).toString()

如此一來,Kotlin的代碼不但更加精鍊,而且可讀性也增強了。

Kotlin對字元串帶來的便利並不限於此,大家知道,Java如果要把幾個變數拼接成字元串,要麼用加號強行拼接,要麼用String.format函數進行格式化。可是前者的拼接加號,時常會跟數值相加的加號混淆;而後者的格式化,還得開發者死記硬背諸如%d、%f、%s、%c、%b等等格式轉換符,實在令人頭痛。對於格式化這個痛點,Kotlin恰如其分地進行了優化,何必引入這些麻煩的格式轉換符呢?直接在字元串中塞進「$變數名」表示此處引用該變數的值,豈不妙哉!

心動不如行動,趕緊動起手來,看看Kotlin如何格式化字元串,代碼如下所示:

btn_format.setOnClickListener { tv_convert.text = "字元串值為 $origin" }

這裡要注意,符號$後面跟變數名,系統會自動匹配最長的變數名。比如下面這行代碼,列印出來的是變數origin_trim的值,而不是origin的值:

btn_format.setOnClickListener { tv_convert.text = "字元串值為 $origin_trim" }

另外,有可能變數會先進行運算,再把運算結果拼接到字元串中。此時,則需用大括弧把運算表達式給括起來,具體代碼如下:

btn_length.setOnClickListener { tv_convert.text = "字元串長度為 $" }

注意到在Kotlin中,美元符號$屬於特殊字元,因此不能直接列印它,必須經過轉義才可列印。轉義的辦法是使用「${ *** }」表達式,該表達式外層的「${ }」為轉義聲明,內層的「***」為需要原樣輸出的字元串,所以通過表達式「${ $ }」即可列印一個美元符號,示例代碼如下所示:

btn_dollar.setOnClickListener { tv_convert.text = "美元金額為 ${ $ }$origin" }

如果只是對單個美元符號做轉義,也可直接在符號$前面加個反斜桿,即「$」,代碼如下:

btn_dollar.setOnClickListener { tv_convert.text = "美元金額為 $$origin" }

不過一個反斜桿僅僅對一個字元進行轉義,如果要對一個字元串做轉義,也就是把某個字元串的所有字元原樣輸出,那麼只能採用形如「${ *** }」的表達式了,該表達式用單引號把待轉義的字元串包起來,好處是能夠保留該字元串中的所有特殊字元。

下面來個Kotlin處理字元串的效果動圖:

GIF/1K

持續更新,關注「老歐說安卓」,老歐和你一起探索移動互聯網的技術體系,認真寫作,用心學習。保留所有版權。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 公眾號 的精彩文章:

熱修復之 Method Hook 原理分析
我們的相遇都是一場不期而遇
煙江石燕︱麓山聽楓:詠洪災後重建並祝福
杭城烤雞NO.1——吳山烤雞

TAG:公眾號 |

您可能感興趣

Kotlin:數組、字元串模板
Spring Boot與Kotlin使用Spring-data-jpa簡化數據訪問層
Canonical宣布Kotlin編程語言Snap包格式上線
Kotlin項目下的Retrofit2網路請求框架
Kotlin和Swift語言在Redmonk榜上排名大幅提升
Kotlin 泛型
Kotlin Android 環境搭建
Spring Boot與Kotlin 使用MongoDB資料庫
Gradle Kotlin DSL的accessors 生成問題
Kotlin打造Android路由框架
Kotlin 條件控制
Kotlin 類和對象
Kotlin語言Web庫又添一虎將:Kweb
Kotlin 語言獲Linux通行證
Kotlin技術分享-異常
Kotlin 循環控制
Kotlin 基本數據類型
Kotlin 編程
Kotlin 基礎語法
Kotlin基本語法