发布日期: 11/15/2021

字符函数

您可以创建一个公式,该公式接受字符参数或返回字符串,并将值的数据类型从数值转换为字符或从字符转换为数值。创建这些公式时,请注意:

字符函数可以生成字符或数值数据。若您计算不同于指定类型的数据类型,则自动更改计算列的数据类型以匹配结果。

作为文字字符串的参数必须用引号括起来。

有关语法的详细信息,请参见《Scripting Guide》中的Character Functions

Char

生成对应于数值参数中的各数字的字符串。例如,Char(1.123) 的求值结果为 1.123。请参见《Scripting Guide》中的Numbers and Strings

Collapse Whitespace

去除首尾空格,并用一个空格替换内部的多个空格。即:若存在多个空格字符,Collapse Whitespace 命令会将两个空格替换为一个空格。

Concat ||

拼接字符串,通过将函数的第二个字符参数追加到第一个字符参数来生成一个新字符串。例如, "Dr." || " " || name 生成一个新字符串,它包含头衔 Dr. 后跟一个空格以及 name 字符串的内容。

Contains

返回第二个参数的第一个实例在第一个参数中的数值位置(若第二个参数存在)。第二个参数可以包含一个或多个字符。若第二个参数不存在,则 Contains 返回零。例如,Contains("Veronica Layman", "ron") 的求值结果为 3。Contains("Lillie Layman", "L") 的求值结果为 1。Contains("Lillie Layman", "Veronica") 的求值结果为 0。第三个参数剩余偏差是可选的。“剩余偏差”是一个用于指定搜索起始位置的数值。Contains("Lillie Layman", "L", 5) 的求值结果为 8,因为搜索从第五个位置开始,跳过了第一个“L”。若 offset 为负数,则 Contains 从距离字符串末尾 offset 个字符处向后搜索。

Munger

通过插入或删除字符从现有字符串计算新字符串。它还可以生成子字符串、计算索引和执行其他任务,具体取决于您指定参数的方式。Munger 函数将大写字母和小写字母作为不同字符处理。

Text 是字符表达式。Munger 将其他三个参数应用于该字符串以计算结果。

Offset 是数值表达式,指示要在字符串中搜索的开始位置。若 Offset 大于 find 参数的第一个实例的位置,则忽略第一个实例。

Find/Length 是字符或数值表达式。使用字符串作为搜索条件,或使用正整数返回从 Offset 位置开始的一定数目的连续字符。若指定负整数作为 Length 值,Munger 返回从 Offset 到字符串末尾的所有字符。

Replace(可选参数)可以为字符串或不指定。若它为字符串且 Find/Offset 值为数值,则 Munger 使用 Replace 字符串替换搜索条件以生成结果。若 Find/Offset 值为数值且未指定字符串,Munger 将计算子字符串。若 Find/Length 值是字符串,则 Munger 始终返回数值偏移量,而忽略 Replace 值(若存在)。要插入 Replace 参数,请点击 Munger 函数中的任意参数,然后点击插入按钮。按 Delete 键或点击“公式编辑器”小键盘上的删除按钮 (Image shown here) 可删除 Replace 参数。

Lowercase、Uppercase

Lowercase 函数将参数中找到的任何大写字符转换为相应的小写字符。例如,Lowercase("VERONICA
LAYMAN")
的求值结果为 veronica layman。Uppercase 函数将参数中找到的任何小写字符转换为相应的大写字符。例如,Uppercase("Veronica Layman") 的求值结果为 VERONICA LAYMAN。

Length

计算参数的长度。例如,Length("Veronica") 的求值结果为 8。若参数为

字符串,则 length 返回字符数;

列表,则 length 返回列表中的项数;

blob(二进制对象),则返回字节数。

Num

当字符串仅包含数字时,生成对应于字符串参数的数值。若字符串包含非数值,结果将为缺失值。例如,Num(“1.123”) 的求值结果为 1.123。

Substr

提取作为第一个参数的一部分的字符。从第二个参数指定的位置开始,基于第三个参数中指定的字符数结束。第一个参数可以为字符列或文字值。起始参数和长度参数可以为求值结果为数值的数值表达式。例如,要仅显示名字,Substr("Veronica Layman", 10, 6) 读取位置 10 到 15 的值,这将得到 Layman

start 为负数,则 Substr 从距离字符串末尾 start 个字符处向后搜索。若 length 为负数或不存在,则 Substr 返回从 start 开始到文本字符串结束之间的字符串。

Substr 也可以结合列表使用。

Titlecase

将字符串转换为首字母大写,即:每个单词的首字符大写,后续字符均小写。例如,Titlecase
(“Veronica Layman”)
的求值结果为 Veronica layman

Trim

根据变元生成新字符串,删除所有首尾空格。第二个参数确定是从该字符串的还是两端删除空格。若未使用第二个参数,则将同时删除两端的空格。例如,Trim("john ") 的求值结果为 johnTrim(" john ", both) 的求值结果也是 john

Word

从字符串提取第 n 个字词。除非指定可选的 delimiters 参数,否则用一个或多个空格定义每个字词的开始位置和结束位置。例如,Word(2, "Veronica Layman") 返回字词 Layman

要插入 delimiters 参数,请点击 Word 函数中的任意参数,然后点击“公式编辑器”小键盘上的插入按钮 Image shown here。按 Delete 键或点击“公式编辑器”小键盘上的删除按钮 (Image shown here) 可删除 delimiters 参数。若未指定分隔符,则将空格作为分隔符。若将分隔符定义为空字符串,则每个字符都被视为一个单字。

大多数特殊字符均作为单个分隔符。您可以输入任意字符或字符集作为字词分隔符。例如,要提取以下示例中的姓氏,请将逗号和空格一起作为分隔符并请求获取第一个字词。Word(1, "Layman, Veronica", ", ") 将返回字词 Layman

Words

根据可选的第二个参数中所列的分隔符从 text 提取字词。默认分隔符为空格。例如,Words("the quick brown fox") 返回 {"the","quick","brown","fox"}

若包括第二个参数,则提取该参数中的所有字符作为分隔符。例如,Words("Doe, Jane P.",", .") 返回 {"Doe","Jane","P"}。

要插入 delimiters 参数,请点击 Words 函数中的任意参数,然后点击“公式编辑器”小键盘上的插入按钮 Image shown here。按 Delete 键或点击“公式编辑器”小键盘上的删除按钮 (Image shown here) 可删除 delimiters 参数。若未指定分隔符,则将空格作为分隔符。若将分隔符定义为空字符串,则每个字符都被视为一个单字。

Left、Right

分别返回包含字符串 text 最左侧或最右侧的 n 个字符的子字符串。这两个函数也适用于列表。

Starts With、Ends With

whole 分别以 part 开头或结尾,则返回 1。否则,返回 0。这两个函数也适用于列表。

Item

由于处理字词分隔符的方式不同,它不同于 Word 函数。若多次找到分隔符或您输入包含多个字符的分隔符,Word 函数将它们视为单个分隔符。Item 函数使用每个分隔符定义新字词位置。为了进行比较,假定姓名采用姓氏, 名字的形式。分隔符为逗号后跟一个空格,例如:

Item(2, "Layman, Veronica", ", ")

Word(2, "Layman, Veronica", ", ")

Item 函数返回一个缺失值,因为它单独处理逗号和空格,发现在它们之间没有任何内容。Word 函数则将逗号和空格作为单个分隔符,找到 Veronica 作为第二个字词。

若未指定分隔符,则将空格作为分隔符。若将分隔符定义为空字符串,则每个字符都被视为单独的项。

Hex 和 Hex to Number

在 16 进制数与 16 进制数和数字之间转换。

Hex 返回参数的十六进制表示。若参数为字符(加引号),则结果为包含字符值的十六进制代码长度 2 倍的字符串。例如,Hex("A") 返回字符串 41。

若参数为数值且指定了“integer”,则 Hex 函数返回所返回整数的 8 位十六进制字符表示。例如,Hex(12, “integer”) 返回字符串 0000000C

Hex to Number 将十六进制转换为数字。

请参见《Scripting Guide》中的Hexadecimal and BLOB Functions

Repeat

创建一个将第一个参数重复第二个参数所指定的次数所得的字符串。第一个参数可以为字符文字、字符变量或字符表达式。例如,Repeat(“Katie”, 3) 得到 KatieKatieKatie

在 JSL 脚本中使用 Repeat 来重复矩阵时,将应用第三个参数。第一个参数为矩阵时,第二个参数按行重复,第三个参数按列重复。

Insert

Insert 将新项插入列表表达式中的指定位置。若未指定位置,则在末尾插入。

Reverse

Reverse 函数颠倒字符串中的字符顺序。

Substitute

第一个参数为字符串,第二个参数为模式,第三个参数为替换字符串。Substitute 函数查找字符串中模式的所有匹配项并用替换字符串来替换它们。

Regex

第一个参数是 Regex 在其中搜索模式匹配项的源字符串。第二个参数是使用正则表达式表示的模式。“公式编辑器”提示您输入这两个必需的参数。

提示:有关使用正则表达式的详细信息,请在 Internet 上搜索正则表达式教程

默认情况下,Regex 执行区分大小写的搜索并返回源字符串中与指定模式匹配的项(若匹配失败则返回缺失值)。可以添加两个可选的参数。您可以键入第三个参数 format,它指定要返回的字符串。若选择,可以使用正则表达式来指定返回的字符串中的替换文本。若指定第三个参数,则还可以指定 IGNORECASE 以便 Regex 在源字符串中搜索匹配项时忽略大写字母。

表 A.1 Regex 示例

Regex 函数示例

返回的字符串

Regex( "@ q3 #", "([a-z])([0-9])" )

q3

该函数区分大小写,因此 q3 是匹配项而 Q3 不是。

Regex( "@ Q3 #", "([a-z])([0-9])", "\0",IGNORECASE)

Q3

尽管 \0 是默认参数,但在该示例中是必需的,以便可以指定 IGNORECASE。

Regex( "@ Q3 #", "([a-z])([0-9])", "\2\1",IGNORECASE)

3Q

有关详细信息以及您可以运行的示例,请选择帮助 > 脚本索引然后搜索 Regex

需要更多信息?有问题?从 JMP 用户社区得到解答 (community.jmp.com).