2017-07-26 127 views
5

在Java中,我們總是提醒我們使用myString.isEmpty()來檢查字符串是否爲空。但是,在Kotlin中,我發現您可以使用myString == ""myString.isEmpty()甚至myString.isBlank()檢查Kotlin中的字符串是否爲空

有沒有關於此的任何指導方針/建議?還是僅僅是「任何事情都會讓你的船搖晃」?

預先感謝餵養我的好奇心。 :D

回答

9

不要使用myString == "",在java中這將是myString.equals("")這也不建議。

isBlankisEmpty不一樣,它取決於您的使用情況。

isBlank檢查char序列的長度是0還是所有索引都是空白。 isEmpty只會檢查字符序列長度爲0

/** 
* Returns `true` if this string is empty or consists solely of whitespace characters. 
*/ 
public fun CharSequence.isBlank(): Boolean = length == 0 || indices.all { this[it].isWhitespace() } 


/** 
* Returns `true` if this char sequence is empty (contains no characters). 
*/ 
@kotlin.internal.InlineOnly 
public inline fun CharSequence.isEmpty(): Boolean = length == 0 
+0

我絕對忘了'myString.equals(「」)'。我猜是因爲我從來沒有這麼做過,因爲我被告知不會。感謝提醒和明確的解釋! – Aba

2

使用isEmpty當你想測試一個字符串正好等於空字符串""

使用isBlank當您要測試字符串爲空或僅包含空白(""," ")。請使用== ""

+0

我很欣賞你把它放在很簡單。現在我只能給出一個無形的優惠,所以歡呼! :) – Aba

4

對於字符串? (可爲空字符串)數據類型,我用.isNullOrBlank()

對於字符串,我用.isBlank()

爲什麼?因爲大部分時間,我不希望允許帶空格的字符串(並且.isBlank()檢查空字符串以及空字符串)。如果您不關心空白,請使用.isNullorEmpty().isEmpty()作爲字符串?和String。

+1

我也想過總是使用isBlank(),但是你知道密碼實際上可能只是空格嗎?當然,這取決於你允許的。感謝您對可空字符串的提醒!這是一個看不見的優點。 :D – Aba

+0

取決於情況,但我會假設大多數網站/後端將禁止使用唯一的空格密碼。再一次,我從來沒有嘗試過!但是對於極端邊緣情況+1 –