![](/img/trans.png)
[英]Regex splitting resulting in an extra space, using \\s but not getting rid of it
[英]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.