森之张卫东 发表于 2015-9-24 22:31

字符串比较函数---2


                                                        字符串比较函数---2

4. 把算法转化为相应的MATLAB语句function result = c_strcmp(str1,str2)%C_STRCMP Compare strings like C function "strcmp"% Function C_STRCMP compares two strings, and returns% a -1 of str1 < str2, a 0 if str1 == str2, and a% +1 if str1 > str2.% Define variables:% diff                  -- Logical array of string differences% msg                   -- Error message% result                -- Result of function% str1                  -- First string to compare% str2                  -- Second string to compare% strings               -- Padded array of strings% Record of revisions:% Date      Programmer      Description of change% ====      ==========      =====================% 10/18/98  S. J. Chapman   Original code% Check for a legal number of input arguments.msg = nargchk(2,2,nargin);error(msg);% Check to see if the arguments are stringsif ~(isstr(str1) & isstr(str2))    error('Both str1 and str2 must both be strings!')else    % Pad strings    strings = strvcat(str1,str2);    % Compare strings    diff = strings(1,:) ~= strings(2,:);    if sum(diff) == 0        % Strings match, so return a zero!        result = 0;    else        % Find first difference between strings        ival = find(diff);        if strings(1,ival(1)) > strings(2,ival(1))            result = 1;        else            result = -1;        end    endend
5. 检测程序我们必须用多个字符串对程序进行检测>> result = c_strcmp('String 1','String 1')result =     0>> result = c_strcmp('String 1','String 1     ')result =     0>> result = c_strcmp('String 1','String 2')result =    -1>> result = c_strcmp('String 1','String 0')result =     1>> result = c_strcmp('String 1','str')result =    -1   第一次检测返回0,是因为两字符串是相同的。第二次也返回0,因为两字符串也是相等的,只是末端空格不同,末端空格被忽略。
          第三次检测返回-1,因为两字符串第一次的不同出现在第8位上,且在这个位置上“1”<“2”。第四次检测将返回1,因为两字符串第一次的不同出现在第8位上,且在这个位置上,“1”>“0”。第五次检测将会返回-1,因为两字符串的第一个字符就不同,在ascii的序列上“S”<“s”。这个函数工作正常。

页: [1]
查看完整版本: 字符串比较函数---2