MATLAB:提取字符串的一部分
MATLAB: extract part of a string
我想提取字符串的一部分(在我的例子中是文件名),如下所示
filename = '12345_name_IV_a12.dat'
我对 '_IV_'
(出现在所有文件中)和 '.dat'
之间的部分感兴趣。因此,答案应该是这样的
a
12
可能吗? 12345
和 'name'
的长度可能会发生变化。数字 (12
) 也可以只有一位数。
你可以这样做:
parts=strsplit(filename, {'_IV_', '.dat'});
result=parts{2};
如果您想将结果拆分为数字和字符,您可以使用 regexp
,如评论中所述:
character = result(regexp(result,'\D'));
numeral = result(regexp(result,'\d'));
在这种情况下 character
包含 a
,numeral
字符串 12
。
我想这样就可以了:
regexp('12345_name_IV_a12.dat', '.*_IV_(\D*)(\d*)\.dat$', 'tokens', 'once')
我将稍微解释一下模式 '.*_IV_(\D*)(\d*)\.dat$'
。我从文件名的末尾开始倒退。 $
标记字符串的结尾。然后我匹配文件扩展名、两个标记(用括号标定)和 _IV_
.
'tokens'
标志使其成为 return 两个标记,'once'
标志阻止它在额外的元胞数组中包装结果。
我认为这个表达式非常明确,总能给你正确的结果。希望能解决你的问题。
我想提取字符串的一部分(在我的例子中是文件名),如下所示
filename = '12345_name_IV_a12.dat'
我对 '_IV_'
(出现在所有文件中)和 '.dat'
之间的部分感兴趣。因此,答案应该是这样的
a
12
可能吗? 12345
和 'name'
的长度可能会发生变化。数字 (12
) 也可以只有一位数。
你可以这样做:
parts=strsplit(filename, {'_IV_', '.dat'});
result=parts{2};
如果您想将结果拆分为数字和字符,您可以使用 regexp
,如评论中所述:
character = result(regexp(result,'\D'));
numeral = result(regexp(result,'\d'));
在这种情况下 character
包含 a
,numeral
字符串 12
。
我想这样就可以了:
regexp('12345_name_IV_a12.dat', '.*_IV_(\D*)(\d*)\.dat$', 'tokens', 'once')
我将稍微解释一下模式 '.*_IV_(\D*)(\d*)\.dat$'
。我从文件名的末尾开始倒退。 $
标记字符串的结尾。然后我匹配文件扩展名、两个标记(用括号标定)和 _IV_
.
'tokens'
标志使其成为 return 两个标记,'once'
标志阻止它在额外的元胞数组中包装结果。
我认为这个表达式非常明确,总能给你正确的结果。希望能解决你的问题。