Main Content

validatestring

检查文本的有效性

说明

示例

matchedStr = validatestring(str,validStrings) 根据 validStrings 检查 str 的有效性。如果文本与 validStrings 中的任何元素是不区分大小写的明确匹配,则是有效文本。validatestring 函数支持前导字符的部分匹配。

如果 str 有效,则 validatestring 返回匹配的文本。否则,MATLAB® 将引发错误。

示例

matchedStr = validatestring(str,validStrings,argIdx) 将输入位置包含在函数参数列表中作为任何生成的错误消息的一部分。可以使用此语法格式化任何生成的错误消息。

matchedStr = validatestring(str,validStrings,funcName) 将指定的函数名称包括在生成的错误标识符中。

matchedStr = validatestring(str,validStrings,funcName,varName) 将指定的变量名称包括在生成的错误消息中。可以使用此语法格式化任何生成的错误消息。

matchedStr = validatestring(str,validStrings,funcName,varName,argIdx) 将输入位置包含在函数参数列表中作为任何生成的错误消息的一部分。可以使用此语法格式化任何生成的错误消息。

示例

全部折叠

检查字符串是否在一组有效值中。

validStrings = ["wind","wonder","when"];
str = "wind";
validStr = validatestring(str,validStrings)
validStr = 

    "wind"

检查 "WON" 是否在 validStrings 定义的一组有效值中。此字符串与 "wonder" 是不区分大小写的部分匹配。

str = "WON";
validStr = validatestring(str,validStrings)
validStr = 

    "wonder"

如果存在多个部分匹配项,而每个字符串不是另一个的子字符串,则 validatestring 会引发错误。

validStrings = ["showcase","show up","showtimes"];
str = "show";
validStr = validatestring(str,validStrings)
Expected input to match one of these values:

'showcase', 'show up', 'showtimes'

The input, show, matched more than one valid value.

但是,如果存在多个部分匹配项,而每个字符串是另一个的子字符串,则 validatestring 返回最短的匹配项。

validStrings = ["righteously","right","righteous"];
str = "rig";
validStr = validatestring(str,validStrings)
validStr = 

    "right"

在名为 findArea.m 的文件中创建函数。对 shape 的验证将在生成的错误消息中包含输入参数在函数参数列表中的位置。对 units 的验证还在错误消息中包含变量名称 ('units'),在错误标识符中包含文件名。可使用 mfilename 函数获取文件名。

function a = findArea(shape,h,w,units)
    expectedShapes = {'square','rectangle','triangle'};
    expectedUnits = {'cm','m','in','ft','yds'};
    
    shapeName = validatestring(shape,expectedShapes,1);
    unitAbbrev = validatestring(units,expectedUnits,mfilename,'units',4);
    
    switch shapeName
        case {'square','rectangle'}
            a = h*w;
        case {'triangle'}
            a = h*w/2;
        otherwise
            error('Unknown shape passing validation.')
    end
end

使用有效的形状名称调用该函数。值 'Rect' 有效,因为它与 'rectangle' 是不区分大小写的部分匹配。

a = findArea('Rect',10,3,'cm')
a =

    30

使用无效的形状名称调用该函数。错误消息中包含无效文本的位置。这里的无效文本是第一个输入参数。

a = findArea('octagon',7,13,'in')
Error using findArea (line 5)
Expected input number 1 to match one of these values:

'square', 'rectangle', 'triangle'

The input, 'octagon', did not match any of the valid values.

使用无效的单位调用该函数。错误消息中包含变量名称和无效文本的位置。无效文本是第四个输入参数。

a = findArea('TRI',10,3,'mi')
Error using findArea (line 6)
Expected input number 4, units, to match one of these values:

'cm', 'm', 'in', 'ft', 'yds'

The input, 'mi', did not match any of the valid values.

使用 mException 查看包含文件名的错误标识符。

id = MException.last.identifier
id =

    'MATLAB:findArea:unrecognizedStringChoice'

输入参数

全部折叠

要验证的文本,指定为字符串标量或字符向量。

示例: 'textToValidate'

示例: "otherTextToValidate"

要匹配的文本,指定为字符串数组或字符向量元胞数组。

示例: ["value1","value2"]

示例: {'val1','val2',val3'}

要验证输入参数的函数的名称,指定为字符串标量或字符向量。如果指定空字符向量 ''<missing> 字符串,则 validatestring 函数将忽略 funcName 输入参数。

示例: "myFunctionName"

示例: 调用 mfilename 函数,如代码 validatestring(units,expectedUnits,mfilename)

要验证的输入变量的名称,指定为字符串标量或字符向量。如果指定空字符向量 ''<missing> 字符串,则 validatestring 函数将忽略 varName 输入参数。

示例: "inputVariable1"

示例: 'variableB'

要验证的输入参数的位置,指定为正整数。

输出参数

全部折叠

匹配的文本,如果 validStrings 是字符串数组,则返回字符串标量;如果 validStrings 是字符向量元胞数组,则返回字符向量。

示例 - 与“ball”匹配 . . .返回值匹配类型
ball, barn, bellball完全匹配
balloon, barnballoon部分匹配(前导字符)
ballo, balloo, balloonballo (最短匹配)与多个字符向量部分匹配,且每个字符向量均为另一个字符向量的子集
balloon, ballet错误与多个唯一字符向量部分匹配
barn, bell错误无匹配

扩展功能

版本历史记录

在 R2006b 中推出