Spotfire® 用户指南

文本函数

下面的列表显示了可在表达式中使用的文本函数。

函数 说明
~= 可以作为 IfCase 语句的一部分。如果 Arg2 正则表达式字符串与 Arg1 字符串匹配,则返回 true

示例:

If( "aab" ~= "a+" , "true", "false" )

Case when "aba" ~= ".a+$" then "true" else "false" end

Concatenate(Arg1, ...) 将所有参数连接(附加)成一个字符串。如果指定了一个参数,则结果为所有行的连接。如果指定了多个参数,则连接每个行。参数可以为任意类型,但将被转换为字符串。结果为字符串类型。Null 参数被忽略。

示例:

Concatenate("April ", 20+1, "st")"April 21st"

Concatenate(null, "Ape")"Ape"

Concatenate (null, null) →(空)

Find(Arg1, Arg2, Arg3) 返回字符串 Arg1Arg2 中的匹配项的索引。Arg3(可选)指示要返回的匹配项。如果未提供第三个参数,则返回第一个匹配项。如果未找到匹配项,则将返回 0。

该搜索区分大小写。前两个参数为字符串类型,第三个参数和结果为整数类型。如果 Arg1 是空字符串,则返回 0。

示例:

Find("lo", "Hello") → 4

Find("a", "Hello") → 0

Find("", "Hello") → 0

Find("", null) →(空)

If(Find("Pri 1", [Col1])>0, "Important", "Not important")

Find("a", "ababab") → 1

Find("a", "ababab", 2) → 3

Find("a", "ababab", 10) → 0

Left(Arg1, Arg2) 返回字符串 Arg1 的前 Arg2 个字符。Arg1 和结果的类型为 string。Arg2 的类型为 real,但仅使用整数部分。如果 Arg2 大于 Arg1 的长度,则返回整个字符串。如果 Arg2 为负数,则会删除 Arg1 字符串右侧的 Arg2 个字符。

示例:

Left("Daddy", 1)"D"

Left("Daddy", 3.99)"Dad"

Left("Daddy", 386)"Daddy"

Left("Daddy", -1)"Dadd"

Len(Arg1) 返回 Arg1 的长度。Arg1 的类型为 string,结果的类型为 integer。

示例:

Len("Hello") → 5

Len(null) →(空)

Lower(Arg1) 返回转换成小写的 Arg1Arg1 和结果的类型为 string。
Mid(Arg1, Arg2, Arg3) 返回 Arg1 中以索引 Arg2 开头且长度为 Arg3 个字符的子字符串。Arg1 和结果的类型为 string。Arg2Arg3 的类型为 real,但仅使用整数部分。如果 Arg2 > Len(Arg1),则返回空字符串。另外,如果 Arg2+Arg3 > Len(Arg1),则 Arg3 会调整为 1+Len(Arg1)-Arg2。如果 Arg2Arg3 为负数,或者如果 Arg2 为零,则返回错误。

示例:

Mid("Daddy", 2, 3)"add"

Mid("Daddy", 386, 4)""

Mid("Daddy", 4, 386)"dy"

Mid("Daddy", -1, 2) →(空)

Mid("Daddy", 2, -1) →(空)

MostCommon(Arg1) 返回指定列的最常用的值。如果多个值同样常用,则使用第一个值。

示例:

MostCommon([Column])

NameDecode(Arg1) 用解码后的字符替换所有子字符串代码。

Spotfire 中的列名称存储为 UTF-16 编码字符串。

示例:

NameDecode("Column %02D")

NameEncode(Arg1) 对字符串中的字符进行编码,以使字符串仅包含与正则表达式 [.0-9a-zA-Z] 匹配的字符。

Spotfire 中的列名称存储为 UTF-16 编码字符串。

示例:

NameEncode("Column £")

Repeat 将重复某字符串指定次数。

示例:

Repeat("Hello", 2)"HelloHello"

Right(Arg1, Arg2) 返回字符串 Arg1 的后 Arg2 个字符。Arg1 和结果的类型为 string。Arg2 的类型为 real,但仅使用整数部分。如果 Arg2 大于 Arg1 的长度,则返回整个字符串。

如果 Arg2 为负数,则会删除 Arg1 字符串左侧的 Arg2 个字符。

示例:

Right("Daddy", 1)"y"

Right("Daddy", 3.99)"ddy"

Right("Daddy", 386)"Daddy"

Right("Daddy", -1)"addy"

RXExtract(Arg1, Arg2, Arg3)

返回字符串 (Arg1) 中与正则表达式 (Arg2) 匹配的部分。Arg3 决定了当存在多个匹配项时使用的匹配项。

示例:

RXExtract([Column], "l+", 1)

RXExtract("Parallel", "l+", 1)"ll"

RXExtract("Parallel", "l+", 2)"l"

RXReplace(Arg1, Arg2, Arg3, Arg4) 根据正则表达式替换子字符串。在 Arg1 中搜索正则表达式 Arg2,并将其替换为 Arg3

Arg4 指定替换选项:

“g”指定如果 Arg2 与多项匹配,则替换所有匹配项。

“i”指定比较应区分大小写。

“s”表示单行模式,指定圆点 (.) 匹配每个字符(而不是除新行外的每个字符)。

使用计算列时,某些字符(例如反斜杠字符“\”以及括号“(”和“)”)需要进行转义才能起作用。由于括号在正则表达式中用于分组,因此如果“(”或“)”符号应该匹配,则“(”和“)”都需要转义,而且在正则表达式中使用该字符时,还需要使用双反斜杠,以便对 Spotfire 字符串和正则表达式进行转义。有关详细信息,请参见关于正则表达式语言元素的文献(例如,在 MSDN 上)。

示例:

RXReplace("Hello", "L+", "LL", "i")"HeLLo"

RXReplace("3 Minor", "(\\d).*", "$1", "") → 3

RXReplace([Column with values within parenteses], "\\(89\\)", "", "")

RXReplace("change\\slashdirection","\\\\","/","")change/slashdirection

(在最后一个示例中,需要将反斜杠转义两次,一次是为 Spotfire 字符串,一次是为正则表达式。)

Split(Arg1, Arg2, Arg3) 使用 Arg2 作为分隔符将 Arg1 中的值拆分为多个子字符串。Arg3 指定哪些值作为新列返回。将仅返回一个列。

使用负数的 Arg3 可指定拆分操作从字符串的末尾处向开头处执行,而不是从开头处向末尾处执行。

例如,如果使用分隔符“.”将名为“X”且包含值“a.b”的列拆分为两部分,则 Split([X],".",1) 将返回“a”,而 Split([X],".",2) 将返回“b”。

示例:

Split([Column]," ",2)

Split([Column]," ",-2)

Split([Column]," / ",3)

Substitute(Arg1, Arg2, Arg3) Arg2Arg1 中的所有匹配项替换为 Arg3。该搜索区分大小写。

示例:

Substitute("Test","t","ting")"Testing"

Substring(Arg1, Arg2, Arg3) 返回 Arg1 中以索引 Arg2 开头且长度为 Arg3 个字符的子字符串。Arg1 和结果的类型为 string。Arg2Arg3 的类型为 real,但仅使用整数部分。如果 Arg2 > Len(Arg1),则返回空字符串。另外,如果 Arg2+Arg3 > Len(Arg1),则 Arg3 会调整为 1+Len(Arg1)-Arg2。如果 Arg2Arg3 为负数,或者如果 Arg2 为零,则返回错误。

示例:

Substring("Daddy", 2, 3)"add"

Substring("Daddy", 386, 4)""

Substring("Daddy", 4, 386)"dy"

Substring("Daddy", -1, 2) →(空)

Substring("Daddy", 2, -1) →(空)

Trim(Arg1) 将删除字符串的开头和结尾的空白字符。

示例:

Trim(" Example ") → "Example"

UniqueConcatenate(Arg1) 连接转换为字符串的唯一值。这些值根据比较运算符进行排序。

示例:

UniqueConcatenate([Column])

Upper(Arg1) 返回转换成大写的 Arg1Arg1 和结果的类型为 string。

示例:

Upper("hello")"HELLO"

另请参见函数