美文网首页
第十六章 Caché 函数大全 $FIND 函数

第十六章 Caché 函数大全 $FIND 函数

作者: Cache技术分享 | 来源:发表于2020-09-06 09:58 被阅读0次

    第十六章 Caché 函数大全 $FIND 函数

    按值查找子字符串,并返回一个整数,指定其在字符串中的结束位置。

    大纲

    $FIND(string,substring,position)
    $F(string,substring,position)
    

    参数

    • string 要搜索的目标字符串。它可以是变量名,数值,字符串文字或任何有效的CachéObjectScript表达式,都可以解析为字符串。
    • substring 要搜索的子字符串。它可以是变量名,数值,字符串文字或任何有效的CachéObjectScript表达式,都可以解析为字符串。
    • position 可选-目标字符串中开始搜索的位置。它必须是一个正整数。

    描述

    $FIND返回一个整数,该整数指定字符串中子字符串的结束位置。 $FIND在字符串中搜索子字符串。 $FIND区分大小写。如果找到子字符串,则$FIND返回子字符串后第一个字符的整数位置。如果未找到子字符串,则$FIND返回值0。

    因为$FIND返回字符在子字符串之后的位置,所以当子字符串是与字符串$FIND的第一个字符匹配的单个字符时,返回2。当子字符串是空字符串(“”)时,$FIND返回1。

    可以包括位置选项以指定搜索的起始位置。如果position大于字符串中的字符数,则$FIND返回值0。

    $FIND计算characters,而不是bytes。因此,它可以与包含8位或16位(Unicode)字符的字符串一起使用。

    示例

    例如,如果变量var1包含字符串“ABCDEFG”,变量var2包含字符串“BCD”,则下面的$find返回值5,指示var2字符串后面的字符(“E”)的位置:

    DHC-APP>SET var1="ABCDEFG",var2="BCD"
     
    DHC-APP>WRITE $FIND(var1,var2)
    5
    

    下面的示例返回4,即字符的位置紧靠子字符串“FOR”的右侧。

    DHC-APP>SET X="FOREST"
     
    DHC-APP>WRITE $FIND(X,"FOR")
    4
    

    在以下示例中,$FIND将搜索不在字符串中的子字符串、null子字符串以及作为字符串第一个字符的子字符串。这些示例分别返回0、1和2:

    DHC-APP>WRITE !,$FIND("aardvark","z")
     
    0
    DHC-APP>WRITE !,$FIND("aardvark","")
     
    1
    DHC-APP>WRITE !,$FIND("aardvark","a")
     
    2
    

    以下示例显示了字符串为空字符串时发生的情况:

    DHC-APP>WRITE !,$FIND("","z")
     
    0
    DHC-APP>WRITE !,$FIND("","")
     
    1
    

    下面的示例返回14,即字符的位置紧靠X中第七个字符后第一个出现的“R”的右侧。

    DHC-APP>SET X="EVERGREEN FOREST",Y="R"
     
    DHC-APP>WRITE $FIND(X,Y,7)
    14
    

    在下面的示例中,$FIND在字符串中的最后一个字符之后开始搜索。它返回零(0):

    DHC-APP>SET X="EVERGREEN FOREST",Y="R"
     
    DHC-APP>WRITE $FIND(X,Y,20)
    0
    

    以下示例使用$FIND$REVERSE从字符串末尾执行搜索操作。此示例在一行文本中查找字符串的最后一个示例。它将该字符串的位置返回为33:

    DHC-APP>SET line="THE QUICK BROWN FOX JUMPED OVER THE LAZY DOG."
     
    DHC-APP>SET position=$LENGTH(line)+2-$FIND($REVERSE(line),$REVERSE("THE"))
     
    DHC-APP>WRITE "The last THE in the line begins at ",position
    The last THE in the line begins at 33
    

    下面的示例使用名称间接返回6,即紧靠子字符串“THIS”右侧的字符位置:

    DHC-APP>SET Y="x",x="""THIS IS A TEST"""
     
    DHC-APP>WRITE $FIND(@Y,"THIS")
    6
    

    注意

    FIND,EXTRACT, PIECE,LIST

    • $FIND按值查找子字符串并返回位置。
    • $EXTRACT按位置定位子字符串并返回子字符串值。
    • $PIECE通过分隔符字符或分隔符字符串定位子字符串,并返回子字符串值。
    • $LIST对特殊编码的字符串进行操作。它通过子字符串计数查找子字符串并返回子字符串值。

    $FIND$EXTRACT$LENGTH$PIECE函数对标准字符串进行操作。各种$LIST函数对与标准字符串不兼容的编码字符串进行操作。唯一的例外是$LIST的一个参数和两个参数形式,它们以编码字符串作为输入,但将单个元素值作为标准字符串输出。

    代理对

    $FIND无法识别代理对。代理对用于表示某些中文字符并支持日语JIS2004标准。可以使用$WISWIDE函数确定字符串是否包含代理对。 $WFIND函数可以识别并正确解析代理对。 $FIND$WFIND相同。但是,由于$FIND通常比$WFIND快,因此对于不太可能遇到代理对的所有情况,$FIND是更可取的。

    相关文章

      网友评论

          本文标题:第十六章 Caché 函数大全 $FIND 函数

          本文链接:https://www.haomeiwen.com/subject/mbzqektx.html