matlab-字符串处理

在matlab中,字符串是用单引号括起来的字符序列,下标从1开始。

1、取某段字符串

>> str = 'I love China';
>> str(1:3)

ans =

    'I l'

2、如果字符串中有单引号,则该单引号要用两个单引号表示。

>> 'I''m a student'

ans =

    'I'm a student'

3、建立多行字符串,形成字符串矩阵

>> str = ['abcdef';'123456'];
>> str(1,2)

ans =

    'b'

eg:建立一个字符串向量,做以下处理:

​ 1.取1~5个字符串组成子字符串

>>  str = 'dg1j43sh4S23SfADHsdaJK78F&_&*SD325asddfv%^%^';
>> str1 = str(1:5)

str1 =

    'dg1j4'

​ 2.将字符串倒序排列 str(a,b,c) a:开始,b:步长,c:结束

>> str2 = str(end:-1:1)

str2 =

    '^%^%vfddsa523DS*&_&F87KJadsHDAfS32S4hs34j1gd'

​ 3.将字符串中的小写字符变成大写字母,其余字符不变

>> x = find(str>='a' & str<='z');
>> str(x) = str(x)-('a'-'A')

str =

    'DG1J43SH4S23SFADHSDAJK78F&_&*SD325ASDDFV%^%^'

​ 4.统计字符串中数字的个数

>> k = find(str>='0'&str<='9');
>> length(k)

ans =

    11

字符串操作

1、字符串与数值之间的转换

​ abs和double函数都可以用来获取字符串矩阵所对应的ASCII码数值矩阵。相反,char函数可以把ASCII码数值矩阵转换为字符矩阵。

>> s1 = 'Matlab';
>> a = abs(s1)

a =

    77    97   116   108    97    98

>> char(a)

ans =

    'Matlab'

2、字符串的比较

字符串比较的两种方法:关系运算符,比较函数

关系运算符比较:两个字符串里面的每一个字符一次按照ASCII码值大小比较,结果要么是0,要么是1。

>> 'sjDAc' >= 'AHDss'

ans =

  1×5 logical 数组

   1   1   1   0   0

比较函数

【1】strcmp(s1,s2):如果s1=s2,结果为1,否则为0

【2】strncmp(s1,s2,n):比较前n个字符是否相等,相等结果为1,否则为0

【3】strcmpi(s1,s2):忽略字母大小写的前提下,比较s1是否等于s2,相等为1,否则为0

【4】strncmpi(s1,s2,n):忽略字母大小写的前提下,比较前n个字符是否相等,相等结果为1,否则为0

>> s1 = 'sjDAc';
>> s2 = 'AHDss';
>> strcmp(s1,s2)

ans =

  logical

   0

>> strncmp(s1,s2,3)

ans =

  logical

   0

>> strcmpi(s1,s2)

ans =

  logical

   0

>> strncmpi(s1,s2,2)

ans =

  logical

   0

3、字符串的查找与替换

findstr(s1,s2):返回短字符串在长字符串中的开始位置

strrep(s1,s2,s3):将字符串s1中的所有子字符串s2替换为s3

>> s1= 'This is a test!';
>> s2= 'test';
>> s3= 'class';
>> str = findstr(s2,s1)

str =

    11

>> str1 = strrep(s1,s2,s3)

str1 =

    'This is a class!'

你可能感兴趣的:(Matlab)