簡體   English   中英

去除內插字符串中的額外空格字符

[英]Getting rid of extra space character in an interpolated string

你能幫我解決以下問題嗎?

"${getFormattedMonthString(months)} ${getFormattedDayString(days)}, till now"

例如上面的字符串 output 是 ---

1 Month 2 days, till now

但是如果 getFormattedDayString(days) 返回空字符串,則 output 將是 --

1 Month , till now

如您所見,Month 之后會有額外的空間。 你能否在這里建議使用字符串插值的正確方法,這樣我就可以擺脫額外的空間。

僅當您要使用日期時,才需要表達式來添加空格。 使其成為外部代碼行比嘗試將其放入字符串語法中要干凈得多:

var daysString = getFormattedDayString(days)
if (daysString.isNotEmpty()) {
    daysString = " " + daysString
}
val output = "${getFormattedMonthString(months)}$daysString till now"

或者您可以使用buildString function 來執行此操作。

val output = buildString {
    append(getFormattedMonthString(months))
    val days = getFormattedDayString(days)
    if (days.isNotEmpty()) {
        append(" " + days)
    }
    append(" till now")
}

我會做一個名為prependingSpaceIfNotEmpty的擴展:

fun String.prependingSpaceIfNotEmpty() = if (isNotEmpty()) " $this" else this

然后:

"${getFormattedMonthString(months)}${getFormattedDayString(days). prependingSpaceIfNotEmpty()}, till now"

雖然如果你有更多的組件,比如一年,我會 go 用於buildString ,類似於 Tenfour 的回答:

buildString { 
    append(getFormattedYear(year))
    append(getFormattedMonth(month).prependingSpaceIfNotEmpty())
    append(getFormattedDay(day).prependingSpaceIfNotEmpty())
    append(", till now")
}

您可以使用.replace(",", ",")

"${getFormattedMonthString(months)} ${getFormattedDayString(days)}, till now".replace(" ,", ",")

現在,字符串中的任何","都將被替換為","

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM