我有这样的数据:
我只想从右边的第一个空格之后提取最后一个值。因此,在此示例中:
我尝试过:
Env =
Var FirstSpace = FIND(" ", 'AWS Reservations'[Account])
Return RIGHT('AWS Reservations'[Account],FirstSpace - 1)
但这给了我奇怪的结果。希望能对解决此问题有所帮助。谢谢。
答案 0 :(得分:3)
FIND
或SEARCH
缺少从字符串末尾开始搜索的选项,这使这很棘手。
您可以使用:
Env = TRIM(RIGHT(SUBSTITUTE('AWS Reservations'[Account], " ", REPT(" ", LEN('AWS Reservations'[Account]))), LEN('AWS Reservations'[Account])))
或将其分解以更好地理解:
Env =
VAR string_length = LEN('AWS Reservations'[Account])
RETURN
TRIM(
RIGHT(
SUBSTITUTE(
'AWS Reservations'[Account],
" ",
REPT(" ", string_length)
),
string_length
)
)
以lm-sample prod
为例。
首先,我们使用REPT(" ", string_length)
创建一个字符串
" ",该字符串的长度与值
lm-sample prod
相同。
然后,我们将所有出现的“”都用这个超长
" "替换,字符串将变成
lm-sample prod
此后,我们将很容易从右侧获得string_length
的子字符串,即
" prod"
最后,我们对结果进行修整以得到我们想要的prod
。
结果:
答案 1 :(得分:0)
您正在将起始字符索引而不是所需的字符数传递给RIGHT()
函数。
Right(文本,NumberOfCharacters)
尝试一下:
Env =
Var FirstSpace = FIND(" ", 'AWS Reservations'[Account])
Return RIGHT('AWS Reservations'[Account], LEN('AWS Reservations'[Account]) - FirstSpace)
答案 2 :(得分:0)
一个可能对其他人有帮助的小说明:如果您正在搜索由 other 而不是空格分隔的字符串部分的最后一个实例,请说句点 (.),例如要从“first.second.third”中获得“third”,您需要用句点替换first“”中的空格,但保留second“”,如那是“超长”字符串,修剪掉了......