5.3.4字符串搜索

从于字符串是一个字符数组,因此字符串之间的比较按元素进行,如下例所示:

GNU=“GNU's Not UNIX”;spaces=(GNU==“”)⇒ 空格=0 0 0 0 1 0 0 1 1 0 0 0

要确定两个字符串是否相同,有必要使用字符串比较函数作用它比较完整的字符串并且区分大小写。strncmp只比较第一个N个字符(带有N作为参数给出)。strcmpistrncmpi是用于不区分大小写比较的相应函数。

 
: tf = strcmp (str1, str2)

如果字符串为,则返回1str1str2相同,否则为0。

如果有str1str2是一个字符串的元胞数组,然后返回一个相同大小的数组,其中包含上述元胞数组每个成员的值。另一个参数也可以是字符串的cellarray(大小相同或只有一个元素)、char matrixor字符串。

小心为了与兼容MATLAB,如果字符串相等,Octave的strcmp函数返回1,否则返回0。这与相应的C库函数正好相反。

详见: strcmpi, strncmp, strncmpi.

 
: tf = strncmp (str1, str2, n)

如果第一个返回1n字符串的字符str1str2相同,否则为0。

strncmp(“abce”,“abcd”,3)⇒ 1.

如果有str1str2是一个字符串的元胞数组,然后返回一个相同大小的数组,其中包含上述元胞数组每个成员的值。另一个参数也可以是字符串的cellarray(大小相同或只有一个元素)、char matrixor字符串。

strncmp(“abce”,{“abcd”,“bca”,“abc”},3)⇒ [1, 0, 1]

小心为了与兼容MATLAB,如果字符串相等,Octave的strncmpfunction将返回1,否则返回0。这与相应的C库函数正好相反。

详见: strncmpi, 字符串比较函数, strcmpi.

 
: tf = strcmpi (str1, str2)

如果字符串为,则返回1str1str2是相同的,不考虑字母字符的大小写,否则为0。

如果有str1str2是一个字符串的元胞数组,然后返回一个相同大小的数组,其中包含上述元胞数组每个成员的值。另一个参数也可以是字符串的cellarray(大小相同或只有一个元素)、char matrixor字符串。

小心为了与兼容MATLAB,如果字符串相等,Octave的strcmp函数返回1,否则返回0。这与相应的C库函数正好相反。

小心不支持国家字母。

详见: 字符串比较函数, strncmp, strncmpi.

 
: tf = strncmpi (str1, str2, n)

如果第一个返回1n的属性s1s2是相同的,不考虑字母字符的大小写,否则为0。

如果有str1str2是一个字符串的元胞数组,然后返回一个相同大小的数组,其中包含上述元胞数组每个成员的值。另一个参数也可以是字符串的cellarray(大小相同或只有一个元素)、char matrixor字符串。

小心为了与兼容MATLAB,如果字符串相等,Octave的strncmpi函数返回1,否则返回0。这与相应的C库函数正好相反。

小心不支持国家字母。

详见: strncmp, 字符串比较函数, strcmpi.

尽管有这些比较函数,但还有更专门的函数来查找字符串中搜索模式的索引位置。

 
: retval = startsWith (str, pattern)
: retval = startsWith (str, pattern, "IgnoreCase", ignore_case)

检查字符串是否以模式开头。

返回一个逻辑值数组,该数组指示输入中的哪个字符串str(单个字符串或字符串的元胞数组)从输入开始图案(单个字符串或字符串的元胞数组)。

如果参数的值忽略大小写如果为true,则函数将忽略的字母大小写str图案。默认情况下,比较区分大小写。

示例:

##一个字符串和一个模式,同时考虑casestartsWith(“hello”,“he”)⇒  1.

##一个字符串和一个模式,同时忽略casestartsWith(“hello”,“HE”,“IgnoreCase”,true)⇒  1.

##考虑casestartsWith({“lab-work.pptx”、“data.txt”、“foundations.ppt”}、{“lab”、“data”})时使用多个字符串和多个模式⇒  1  1  0

##考虑casestartsWith({“DATASHEET.ods”、“data.txt”、“foundations.ppt”}、“data”、“IgnoreCase”,false)时使用多个字符串和一个模式⇒  0  1  0

##多个字符串和一个模式,同时忽略casestartsWith({“DATASHEET.ods”、“data.txt”、“foundations.ppt”}、“data”、“IgnoreCase”,true)⇒  1  1  0

详见: endsWith, 正则表达式, strncmp, strncmpi.

 
: retval = endsWith (str, pattern)
: retval = endsWith (str, pattern, "IgnoreCase", ignore_case)

检查字符串是否以模式结束。

返回一个逻辑值数组,该数组指示输入中的哪个字符串str(单个字符串或字符串的元胞数组)以输入结束图案(单个字符串或字符串的元胞数组)。

如果参数的值忽略大小写如果为true,则函数将忽略的字母大小写str图案。默认情况下,比较区分大小写。

示例:

##一个字符串和一个模式,同时考虑caseendsWith(“hello”,“lo”)⇒  1.

##一个字符串和一个模式,同时忽略casendsWith(“hello”,“LO”,“IgnoreCase”,true)⇒  1.

##多个字符串和多个模式,同时考虑caseendsWith({“tests.txt”、“mydoc.odt”、“myFunc.m”、“results.pptx”}、{“.docx”、“.odt”和“.txt”})⇒  1  1  0  0

##多个字符串和一个模式,同时考虑casendsWith({“TESTS.TXT”、“mydoc.odt”、“result.TXT”、“myFunc.m”}、“.TXT”、”IgnoreCase“,false)⇒  0  0  1  0

##多个字符串和一个模式,同时忽略caseendsWith({“TESTS.TXT”,“mydoc.odt”,“result.TXT”,“myFunc.m”},“.TXT”,”IgnoreCase“,true)⇒  1  0  1  0

详见: 启动方式, 正则表达式, strncmp, strncmpi.

 
: v = findstr (s, t)
: v = findstr (s, t, overlap)

此函数已过时。使用strfind相反

返回两个字符串中较长字符串中所有位置的向量st其中开始出现两个中较短的一个。

如果可选参数重叠如果为true(默认值),则returnedvector可以包括重叠的位置。例如

findstr(“ababab”,“a”)⇒ [1, 3, 5];findstr(“abababa”,“aba”,0)⇒ [1, 5]

小心 findstr已过时。使用strfind在所有新代码中。

详见: strfind, strmatch, 字符串比较函数, strncmp, strcmpi, strncmpi, 查找.

 
: idx = strchr (str, chars)
: idx = strchr (str, chars, n)
: idx = strchr (str, chars, n, direction)
: [i, j] = strchr (…)

在字符串中搜索str出现的字符字符.

返回值以及n方向参数的行为与中相同查找.

这将比使用更快正则表达式在大多数情况下。

详见: 查找.

 
: n = index (s, t)
: n = index (s, t, direction)

返回字符串第一次出现的位置t在里面s,如果未找到匹配项,则为0。

s也可以是字符字符串数组或字符串的元胞数组。

例如

索引(“Teststring”,“t”)⇒ 4.

如果方向第一,返回找到的第一个元素。如果方向最后的,返回找到的最后一个元素。

详见: 查找, 肉纤维蛋白.

 
: n = rindex (s, t)

返回字符串最后一次出现的位置t在字符串中s,如果未找到匹配项,则为0。

s也可以是字符字符串数组或字符串的元胞数组。

例如

rindex(“测试字符串”,“t”)⇒ 6.

这个肉纤维蛋白函数等效于指数具有方向设置为最后的.

详见: 查找, 指数.

 
: idx = unicode_idx (str)

返回一个数组,其中包含中每个UTF-8编码字符的索引str.

unicode_idx(“aäbc”)⇒ [1, 2, 2, 3, 4]
 
: idx = strfind (str, pattern)
: idx = strfind (cellstr, pattern)
: idx = strfind (…, "overlaps", val)
: idx = strfind (…, "forcecelloutput", val)

搜索图案在字符串中str并返回向量中每一个此类事件的起始索引idx.

如果没有发生此类事件,或者图案str,或者如果图案那么它本身就是空的idx是空的吗[].

可选参数重叠确定图案是否可以在中的每个位置匹配str(true),或仅用于完全模式的唯一出现(false)。默认值为true。

如果字符串的元胞数组cellstr则指定idx是一个向量数组,如上所述。

可选参数强制输出军队idx作为载体的元胞数组。默认值为false。

示例:

strfind(“abababa”,“aba”)⇒ [1, 3, 5]

strfind(“abababa”、“aba”、“重叠”、false)⇒ [1, 5]

strfind({“abababa”,“bebebe”,“ab”},“aba”)⇒        {[1,1]=1 3 5[1,2]=[](1x0)[1,3]=[](0x0)}

strfind(“abababa”、“aba”、“forcecelloutput”,true)⇒        {          [1,1] =             1   3   5        }

详见: 正则表达式, regexpi, 查找.

 
: idx = strmatch (s, A)
: idx = strmatch (s, A, "exact")

此函数已过时。使用替代方案例如strncmp字符串比较函数相反

的条目的返回索引A以字符串开头s.

第二个参数A必须是字符串、字符矩阵或字符串数组。

如果第三个参数准确的没有给出,那么s只需要匹配A最长可达s.中的尾随空格和nullsA匹配时忽略。

例如

strmatch(“苹果”、“苹果汁”)⇒ 1strmatch(“苹果”,[“苹果”;“苹果汁”;“一个苹果”])⇒ [1;2]strmatch(“苹果”,[“苹果”;“苹果汁”;“一个苹果”],“精确”)⇒ 1.

小心 strmatch已过时(并且可能返回错误的结果MATLAB当与字符串的元胞数组一起使用时。使用strncmp(正常情况)或字符串比较函数(准确的case)。根据应用情况,其他更换可能性包括正则表达式验证.

详见: strncmp, 字符串比较函数, 正则表达式, strfind, 验证.


版权所有 © 2024 Octave中文网

ICP备案/许可证号:黑ICP备2024030411号