[英]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.