• matlab学习笔记10_5 通用字符串操作和比较函数


    一起来学matlab-matlab学习笔记10

    10_5 通用字符串操作和比较函数

    觉得有用的话,欢迎一起讨论相互学习~Follow Me

    参考书籍
    《matlab 程序设计与综合应用》张德丰等著 感谢张老师的书籍,让我领略到matlab的便捷
    《MATLAB技术大全》葛超等编著 感谢葛老师的书籍,让我领略到matlab的高效

    将整数数组转换成字符串

    • s=string(A)
      • 其中A为正整数数组,这个函数的作用是将一个整数数组转换成字符串矩阵,字符串中的字符ASCII码即是A中相应的元素值。
      • 也可以通过string()函数将任意正整数矩阵转换成相应的字符串矩阵。

    将ASCII码转换成字符串

    (1)char(A):此函数将由正整数组成的矩阵转换成字符串矩阵,矩阵的元素一般要在0-65535之间,超出这个范围的是没有定义的,但也可以显示出结果,只是系统会给出超出范围的警告。
    (2)s=char(C):如果C是由字符串组成的单元阵,此函数将单元阵C转换成字符串矩阵,字符串矩阵的每行就是单元阵的每个元素,且用空格将每个字符串补齐,以保证字符串矩阵的合法性。也可以用cellstr()函数将一个字符串矩阵转换为一个字符串单元阵。

    (3)s=char(sl,s2,s3,...)此函数以各个字符串是s1,s2,s3,...为每行构成字符串矩阵S,并自动以适当的空格追加在较短的字符串的后面,使各行的字符串的字符个数相同,以构造合法的字符串矩阵。参数中的空字符串也会被空格填充为相同大小的空格字符串。

    char(65537)
    s={'My' 'name' 'is' 'hello'}
    k=char(s)
    cellstr(k)
    
    ans =
    
    ￿  % 这个是越界了的输出的不知道是什么鬼东西
    
    
    s =
    
        'My'    'name'    'is'    'hello'
    
    
    k =
    
    My   
    name
    is   
    hello
    
    
    ans =
    
        'My'
        'name'
        'is'
        'hello'
    

    将字符串转换成ASCII码

    • abs(S) S为字符串,此函数返回S的每个字符的ASCII码,结果是一个整数矩阵,可以当做一般的矩阵处理
    • double(S) 此函数作用与abs(S)有相同之处,它是将符合矩阵或字符串转换成双精度的浮点数组组成的矩阵。

    输入空格符

    • blanks(n)用于输出n个空格。此函数在调整输出格式,要输出多个空格时十分有效,可以精确地输出需要的空格。通常与disp()函数联用,对输出格式进行调整。
      在这里插入图片描述

    将字符串进行大小写转换

    • upper(S):将字符串或者字符串矩阵S中的所有小写字母转换成大写,原有的大写字母保持不变
    • lower(S):将字符串或字符串矩阵S中的所有大写字母转换成小写,原有的小写字母保持不变

    将字符串作为命令执行

    • a=eval('字符串表达式')
      此函数返回由字符串表达式执行的结果,可以将各个不同部分放在"[]"内以形成一整条命令。这个函数在M文件中进行交互式命令时很有用。
    
    format compact
    for i=1:9
    eval(['a' char(abs('0')+i) '=' char(abs('0')+i)])
    end
    
    
    a1 =
         1
    a2 =
         2
    a3 =
         3
    a4 =
         4
    a5 =
         5
    a6 =
         6
    a7 =
         7
    a8 =
         8
    a9 =
         9
    

    两个字符串比较

    • (1)strcmp('stnngl','strmg2'):将两个字符串进行比较,如果两字符串相等,此函数返回逻辑“真",否则返回逻辑“假",即此函数只能判断两字符串是否相等,而不能判断按字母顺序谁在谁前面。

    • (2)strcmp(C1,C2):如果Cl和C2都是由字符串组成的大小相同的单元阵,此函数返回一个与单元阵相同大小的逻辑矩阵。如果单元阵Cl和C2相同位置上的字符串相同,则在逻辑矩阵的相应位置上输出1,否则输出0。Cl和C2其中之一或全部可以为字符串或字符串矩阵,但返回的逻辑矩阵与单元阵有相同的大小。

    • 注意:单元数组和普通数组的返回值完全不相同,普通数组只返回一个表示是否相等的值

    • 比较是否相同的大小写函数对大小写敏感,空格也会参与比较

    strcmp('hello','hello')
    strcmp('hello','world')
    c1={'my' 'name';'is' 'lilei'}% 元胞数组,单元数组
    c2={'her' 'name';'is' 'lili'}
    c3='NAME'
    c4 = ['my' 'name';'is' 'olli'] % 普通char数组
    c5 = ['my' 'name';'is' 'lili']
    strcmp(c1,c2)
    strcmp(c1,c3)
    strcmp(c5,c4)
    
    % ans =
    %      1
    % ans =
    %      0
    % c1 =
    %     'my'    'name'
    %     'is'    'lilei'
    % c2 =
    %     'her'    'name'
    %     'is'     'lili'
    % c3 =
    % NAME
    % c4 =
    % myname
    % isolli
    % c5 =
    % myname
    % islili
    % ans =
    %      0     1
    %      1     0
    % ans =
    %      0     0
    %      0     0
    % ans =
    %      0
    

    两个字符串的前n个字符

    • strncmp('string1','string2',n):如果2个字符串的前n个字符相同,则此函数返回逻辑"真",否则返回逻辑"假",比较函数对大小写敏感。
    • strncmp(C1,C2,n):如果Cl和C2为由字符串组成的大小相同的单位阵,则此函数将相同位置的字符串的前N个字符进行比较。如果相同就在相同位置输出1,否则输出0;如其中之一为字符串,则将单位阵中的所有字符串都与这个字符串进行比较,返回与单位阵相同大小的逻辑阵。
    s1='Matlab';s2='MatLab';
    strncmp(s1,s2,3)
    strncmp(s1,s2,4)
    c1={'good' 'bad';'Matlab' 'Matlab'}
    c2='MatLab'
    strncmp(c1,c2,3)
    strncmp(c1,c2,4)
    
    % ans =
    %      1
    % ans =
    %      0
    % c1 =
    %     'good'      'bad'   
    %     'Matlab'    'Matlab'
    % c2 =
    % MatLab
    % ans =
    %      0     0
    %      1     1
    % ans =
    %      0     0
    %      0     0
    

    匹配字符串操作

    • strmatch('substr', S)

      • S可以是字符串矩阵或者字符串组成的单元阵,如果是单元阵,则必须是单列,函数返回以字符串substr开始的行的行号。字符串矩阵的查找速度要比单元阵的查找速度要快。
    • strvcat('Hello','Yes') is the same as ['Hello';'Yes '] exceptthat the padding is done automatically. 此函数用于构造字符串矩阵,但是可以自动补零是每行中字符数量相同。 但是使用 char函数 也能解决这个问题

    k=strmatch('good',char('good','badgood','goodbad'))
    s={'yes';'noyes';'yesno'}
    strmatch('yes',s,'exact')
    
    % k =
    %      1
    %      3
    % s =
    %     'yes'
    %     'noyes'
    %     'yesno'
    % ans =
    %      1
    

    在字符串中查找子串

    • findstr('str1','str2')此函数在长字符串中查找短的字符串,并返回字符串中短字符串开始的所有位置。子串和母串在括号中既可在前也可在后,即str1、str2中任意一个都可作为子串或母串。
    format compact
    s='This is a good goose.'
    b=findstr(s,'oo')
    
    % s =
    % This is a good goose.
    % b =
    %     12    17
    

    字符串替换操作

    • strrep('str1','str2','str3')
      • 此函数将字符串中的所有的字符串str2用字符串str3来代替。其中,str1、str2和str3任何一个可以为字符串组成的单位阵或矩阵,返回的结果与此单位阵或矩阵有相同的大小。如果两个以上为单元阵(元胞矩阵)或矩阵时,则它们的类型和大小必须相同(每行字符数是不同的)。
    format compact
    strrep(s,'oo','ee')
    str1={'matlab' 'welcome';'you' 'me'}
    str2={'MatLab' 'lab';'good' 'software'}
    str3={'mat' 'come';'you' 'me'}
    strrep(str1,str3,str2)
    strrep(str1,'me','you')
    strrep('MatLab',str2,'!!!')
    strrep('matlab','lab',str3)
    
    % test_strrep
    % ans =
    % This is a geed geese.
    % str1 =
    %     'matlab'    'welcome'
    %     'you'       'me'     
    % str2 =
    %     'MatLab'    'lab'     
    %     'good'      'software'
    % str3 =
    %     'mat'    'come'
    %     'you'    'me'  
    % ans =
    %     'MatLablab'    'wellab'  
    %     'good'         'software'
    % ans =
    %     'matlab'    'welcoyou'
    %     'you'       'you'     
    % ans =
    %     '!!!'       'MatLab'
    %     'MatLab'    'MatLab'
    % ans =
    %     'matmat'    'matcome'
    %     'matyou'    'matme'   
    

    得到指定的子串

    (1)strtok('string',d):此函数返回由字符串d作为分割的字符串string的第1部分,也就是说,返回字符串strmg中第1个字符d之前的所有字符。如果字符串中不含有字符d则返回整个字符串;如果d字符恰为字符串string的第1个字符,则函数返回除第1个字符之外的所有字符。合法的d可以为任意字符或字符串,如果d为字符串,则将它的第1个字符作为分隔符。如果string中有前导空格,则前导空格将被忽略。
    (2)strtok('stnng'):此函数以默认的回车符(ASCII码为13)、制表符(ASCII码为9)、空格(ASCII码为32)作为分割符,前导空格将被忽略
    (3)[token,rem]=strtok(•••):此函数不但返回上面的查找结果token,还返回剩余的字符串rem,其中不包括分割符,前导空格被忽略。其中strtok(...)可以为strtokok('string')或strtok('string',d)形式。

    在这里插入图片描述

    判断串中元素是否为字母

    • isletter(S) S可以是字符串或字符串矩阵,此函数返回与S同样维数的逻辑矩阵,如果S中的元素为字母,则在逻辑矩阵的相应位置上输出1,否则输出0.

    判断串中元素是否为空格

    • isspace(S) 此函数与isletter(S)用法相同,在为空格的相应位置上输出1,否则输出0
  • 相关阅读:
    利用合成数据进行时间序列分类的数据扩充方法
    基于 KubeSphere CI/CD 将 Spring Boot 项目发布至 Kubernetes
    矩阵白化
    delphi 过滤开头 结尾 全部 空格的函数
    delphi CopyFileProgressBar 拷贝文件显示进度条
    delphi 分享三个随机字符串
    delphi IsIPAdress 非正则表达式验证IP的方法
    delphi PosAnsi
    delphi公用函数
    Delphi中break,exit,abort跳出循环的比较
  • 原文地址:https://www.cnblogs.com/cloud-ken/p/11738426.html
Copyright © 2020-2023  润新知