是否可以在matlab中从右到左读取字符串?

时间:2014-04-02 12:47:15

标签: string matlab

考虑接下来的两个脚本:

str1='N.KABALA.150.5.L12.5'
str2='N.C.CL.15.N12.5'

我想存储这些字符串的最后一部分(即'L12.5'​​和'N12.5'​​)

我已经尝试过以下regexp命令:

str1(regexp(str1,'L\d'):end) 

但它区分大小写(即取决于字母“L”) 这不适用于str2(相关字母为“N”)

我想从右到左读取字符串,而不是。

这可以在matlab中使用吗?

3 个答案:

答案 0 :(得分:1)

Matlab确实有一个fliplr函数来翻转数组。

>> fliplr(str1)

ans =

5.21L.5.051.ALABAK.N

>> fliplr(str2)

ans =

5.21N.51.LC.C.N

此外,如果它始终是您所追求的最后5个字符,则可以使用结束索引:

>> str1(end-4:end)

ans =

L12.5

>> str2(end-4:end)

ans =

N12.5

答案 1 :(得分:1)

首先获取.字符的索引,并从第二个到最后一个.获取字符串到字符串的末尾:

str1 = 'N.KABALA.150.5.L12.5';
I = regexp(str1, '\.');
str1( I(end-1)+1:end )

>> ans = L12.5


str2 = 'N.C.CL.15.N12.5';
I = regexp(str2, '\.');
str2( I(end-1)+1:end )

>> ans = N12.5

答案 2 :(得分:0)

以下正则表达式匹配每个带或不带小数点的数字,前面带有小写或大写字母,并且位于被测字符串的末尾。

str1='N.ELBETI.150.L10';
str2='N.C.CL.15.N12.5';

expr = '[a-zA-Z](\d+\.?\d?)$';
sut = str2; % string under test

[s,e,t, m] = regexp(sut,expr);
% The matched string:
m
% Only the number:
pos = t{1};
num1 = str2double(sut(pos(1,1):pos(1,2)))