Matlab函数之isstrprop
isstrprop:确定字符串是否为制定类别
语法
TF = isstrprop(str,category)
TF = isstrprop(str,category,‘ForceCellOutput’,tf)
说明
TF = isstrprop(str,category)确定输入文本的元素是否是指定的类别,如字母、数字或空白。例如,isstrprop(‘ABC123’,‘alpha’) 返回一个 1×6 逻辑数组 [1 1 1 0 0 0],指示前三个字符为字母。
如果 str 是字符数组、字符串标量或数值数组,则 isstrprop 返回一个逻辑数组。
如果 str 是字符向量元胞数组或字符串数组,则 isstrprop 返回一个逻辑向量元胞数组。
TF = isstrprop(str,category,‘ForceCellOutput’,tf) 在 tf 为 1 (true) 时会将 TF 返回为一个元胞数组,即使 str 是一个字符数组、字符串标量或数值数组也是如此。tf 的默认值为 0 (false)。
示例
①确定哪些字符为字母
创建字符向量,并确定哪些字符为字母。
chr = ‘123 Maple Street’
chr =
‘123 Maple Street’
TF = isstrprop(chr,‘alpha’)
TF = 1x16 logical array
0 0 0 0 1 1 1 1 1 0 1 1 1 1 1 1
使用 TF 查找 chr 中字母的索引。
idx = find(TF)
idx = 1×11
5 6 7 8 9 11 12 13 14 15 16
- 1
chr(idx)
ans =
‘MapleStreet’
②确定字符串数组中的字符类型
创建字符串数组。然后,使用 isstrprop 函数确定各个字符的所属类别。
创建字符串标量,并确定哪些字符是数字。从 R2017a 开始,可以使用双引号创建字符串。
str = “123 Maple Street”
str =
“123 Maple Street”
TF = isstrprop(str,‘digit’)
TF = 1x16 logical array
1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0
创建非标量字符串数组。确定每个字符串中的哪些字符是空白字符。isstrprop 返回一个元胞数组,其中的每个元胞都包含 str 中一个字符串的结果。
str = [“123 Maple St.”;“456 Oak St.”]
str = 2x1 string array
“123 Maple St.”
“456 Oak St.”
TF = isstrprop(str,‘wspace’)
TF = 2x1 cell array
{1x13 logical}
{1x11 logical}
要显示第二个字符串 str(2) 的结果,请对 TF{2} 进行索引。
TF{2}
ans = 1x11 logical array
0 0 0 1 0 0 0 1 0 0 0
③确定元胞数组中的字符类型
创建字符向量元胞数组。确定哪些字符为空白字符。
C = {‘123 Maple St.’;‘456 Oak St.’}
C = 2x1 cell array
{‘123 Maple St.’}
{‘456 Oak St.’ }
TF = isstrprop(C,‘wspace’)
TF = 2x1 cell array
{1x13 logical}
{1x11 logical}
④在元胞数组中返回逻辑向量
在字符向量中查找标点字符。isstrprop 返回一个逻辑向量,指示哪些字符属于该类别。强制 isstrprop 在一个元胞数组中返回逻辑向量。
chr = ‘A horse! A horse! My kingdom for a horse!’
chr =
‘A horse! A horse! My kingdom for a horse!’
TF = isstrprop(chr,‘punct’,‘ForceCellOutput’,true)
TF = 1x1 cell array
{1x41 logical}
使用 TF{1} 查找 chr 中的标点符号的索引。
find(TF{1})
ans = 1×3
8 17 41
- 1
⑤确定数值数组中的字符类型
创建一个数值数组。确定哪些数字对应于字母的字符代码。
X = [77 65 84 76 65 66]
X = 1×6
77 65 84 76 65 66
- 1
TF = isstrprop(X,‘alpha’)
TF = 1x6 logical array
1 1 1 1 1 1
- 1
isstrprop 将所有数字均识别为字母的字符代码。使用 char 函数将数字转换为其对应的字符。
c = char(X)
c =
‘MATLAB’
⑥输入参数
str - 输入数组
字符串数组 | 字符数组 | 字符向量元胞数组 | 数值数组
输入数组,指定为字符串数组、字符数组、字符向量元胞数组或数值数组。
如果 str 是数值数组,则 isstrprop 会将数字作为 Unicode® 字符代码处理。如果数字是双精度或单精度浮点数,则 isstrprop 在将它们解释为字符代码之前,会先将它们舍入到最接近的整数值。
数据类型: string | char | cell | double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
category-字符类型
字符类别,指定为字符向量或字符串标量。isstrprop 根据 Unicode 标准定义的类别对 str 中的字符进行分类。
alpha: 字母;
alphanum: 字母或数字;
cntrl: 控制字符(例如 char(0:20));
digit: 数字;
graphic: 图形字符,isstrprop 将除以下字符外的所有 Unicode 字符视为图形字符:未赋值字符、空白字符、行分隔符、段落分隔符、控制字符、用户定义的专用字符、代理字符;
lower: 小写字母;
print: 图形字符,加上 char(32);
punct: 标点字符;
wspace: 空白字符。此范围除了包括 ANSI® C 定义的空白 {’ ,’\t’,’\n’,’\r’,’\v’,’\f’} 以外,还包括一些其他的 Unicode 字符;
upper: 大写字母;
xdigit: 有效的十六进制数字。
tf-True或False
指定1或0。
⑦输出参数
TF - True 或 false
逻辑数组 | 逻辑向量元胞数组
True 或 false,以逻辑数组或逻辑向量元胞数组形式返回。
如果 str 是字符向量、字符串标量或数值数组,则 TF 是一个逻辑数组,指示有哪些字符属于指定的类别。
如果 str 是字符向量元胞数组或字符串数组,则 TF 是一个元胞数组。对于 str 中的每个元素,TF 中与之对应的元胞都会包含一个逻辑向量,指示此元素中的哪些字符属于指定的类别。
提示
除了一些其他的 Unicode 字符外,wspace 选项为其返回 true 的空白字符还包含制表符、换行符、垂直制表符、换页符、回车符和空格。要查看 wspace 选项为其返回 true 的所有字符,请输入以下命令,然后在 Unicode 参考中查找返回的十进制码:
find(isstrprop(char(1):char(intmax(‘uint16’)),‘wspace’))