繁体   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