如何在matlab中替换字符串的一部分

时间:2012-08-13 20:21:04

标签: string matlab

我有一个字符串矩阵,里面填充了像

这样的数据
matrix = ['1231231.jpeg','4343.jpeg',...]

我想删除其文件扩展名并获取

matrix  = ['1231231', '4343']

我该怎么办?是否有任何功能或什么:)

5 个答案:

答案 0 :(得分:3)

用户fileparts,它返回文件的pathnameextension三个变量。所以这应该对你有用

[~, fName, ext] = fileparts(fileName)

答案 1 :(得分:1)

matlab中有一个函数

http://www.mathworks.com/help/techdoc/ref/fileparts.html

file = 'H:\user4\matlab\classpath.txt';
[pathstr, name, ext] = fileparts(file)

pathstr =
H:\user4\matlab

name =
classpath

ext =
.txt

答案 2 :(得分:1)

假设矩阵看起来像

 matrix = ['1231231.jpeg';
           '4343.jpeg';
            ....];

(;而不是,)。如果使用',',则矩阵中的字符会自动进行分页。

您可以使用arrayfun对矩阵的每个索引执行操作。以下命令应该起作用

arrayfun(@(x) matrix(x,1:strfind(a(matrix,:),'.jpeg')-1), str2num(matrix(:,1))', 'UniformOutput' , false)

答案 3 :(得分:1)

你总是可以循环遍历它们并解析它们:

r[i] = regexp(char(string), '(?<dec>\d*).(?<ext>\w*)', 'names');

使用r [i] .dec作为数值。

答案 4 :(得分:1)

注意:来自(垂直)串联不同长度的字符串的矩阵将不起作用(除了等长字符串的特殊情况)。在调用vertcat

时,每个字符都被[A;B].视为单个矩阵元素

替代方案,使用单元格数组和cellfun(+独立于文件扩展名):

matrix = {'1231231.jpeg','4343.jpeg'};
matrix_name = cellfun(@(x) x(1:find(x == '.', 1, 'last')-1), matrix, 'UniformOutput', false);