kotlin轉java代碼,Kotlin入門(5)字符串及其格式化

 2023-10-08 阅读 27 评论 0

摘要:上一篇文章介紹了數組的聲明和操作,包括字符串數組的用法。注意到Kotlin的字符串類也叫String,那么String在Java和Kotlin中的用法有哪些差異呢?這便是本文所要闡述的內容了。 ?   首先要說明的是String類型與基本變量類型之間的轉換方式,在《Ko

上一篇文章介紹了數組的聲明和操作,包括字符串數組的用法。注意到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代碼。當然,轉換類型只是字符串的基本用法,還有更多處理字符串的其他用法,比如查找子串、替換子串、截取指定位置的子串、按特定字符分隔子串等等,在這方面Kotlin基本兼容Java的相關方法。對于查找子串的操作,二者都調用indexOf方法;對于截取指定位置子串的操作,二者都調用substring方法;對于替換子串的操作,二者都調用replace方法;對于按特定字符分隔子串的操作,二者都調用split方法。
下面是Kotlin使用indexOf和substring方法的代碼例子:

    val origin:String = tv_origin.text.toString()var origin_trim:String = originif (origin_trim.indexOf('.') > 0) {origin_trim = origin_trim.substring(0, origin_trim.indexOf('.'))}

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

    btn_split.setOnClickListener {var strList:List<String> = 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()

java字符串日期格式化、同時,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 = "字符串長度為 ${origin.length}" }

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

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

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

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

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

?

kotlin轉java、下面來個Kotlin處理字符串的效果動圖:

?

?

__________________________________________________________________________
本文現已同步發布到微信公眾號“老歐說安卓”,打開微信掃一掃下面的二維碼,或者直接搜索公眾號“老歐說安卓”添加關注,更快更方便地閱讀技術干貨。

字符串格式化什么意思。?

轉載于:https://www.cnblogs.com/aqi00/p/7144377.html

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/1/131211.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息