在MATLAB中如何在单元格数组中的每个字符串的开头插入一个字符串?

时间:2016-06-23 17:54:04

标签: string matlab insert string-concatenation cell-array

我有一个数字字符串的单元格数组,例如:

    function getcurrency(currency){

        var deferred = $q.defer();
        console.log("currency "+ currency );
        $http.get('/api/staticdata?type='+currency).then(function(result) {
            if(result){
                //return result
                console.log(result);
                deferred.resolve(result);
            }
          },
          function (err) {
              deferred.reject(err);
          });

          return deferred.promise;
        }

我正在尝试将字符串(labels = {'1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'} )添加到每个数组元素的开头而不使用任何类型的循环,因为数组很大并且我需要代码快速运行。我的另一个要求是在将'Label '应用于数组中的两位数元素后,必须保留单词'Label'之后的空格。我想要的结果是:

fullLabels = {'Label 1', 'Label 2', 'Label 3', 'Label 4', 'Label 5',
              'Label 6', 'Label 7', 'Label 8', 'Label 9', 'Label 10',
              'Label 11', 'Label 12'}

我尝试使用strcat()这样:

fullLabels = strcat('Label ', labels);

这适用于单位数组元素,但当它应用于两位数组元素时,'Label'之后的空格将被移除以给出:

fullLabels = {..., 'Label10', 'Label11', 'Label12'}

2 个答案:

答案 0 :(得分:2)

在连接之前,

strcat修剪所有输入的尾随空格。您需要使用[]手动连接字符串。

fullLabels = cellfun(@(x)['Label ', x], labels, 'UniformOutput', false)

%   'Label 1'
%   'Label 2'
%   'Label 3'
%   'Label 4'
%   'Label 5'
%   'Label 6'
%   'Label 7'
%   'Label 8'
%   'Label 9'
%   'Label 10'
%   'Label 11'
%   'Label 12'

您还可以使用regexprep之类的内容来添加标签。这会将每个标签的第一个字符替换为自身(\1),并在前面添加'Label '

fullLabels = regexprep(labels, '^.', 'Label \1')

<强>更新

@ Dev-iL的答案提到使用单元格数组将空格传递给strcat,我不知道。我们也可以将'Label ' 放在单元格中,而不是连接空格。

strcat({'Label '}, labels)

答案 1 :(得分:2)

由于strcat只删除了尾随空格,如果你设法让你的数字字符串以空格开头(使用任何转换它们的设置&#34;正确的数字&# 34;),你不会看到这个问题:

labels = {' 1', ' 2', ' 3', ' 4', ' 5', ' 6', ' 7', ' 8', ' 9', ' 10', ' 11', ' 12'};
fullLabels = strcat('Label',labels);

或者,正如前面提到的here,你可以傻瓜&#34; strcat用一个单元格围绕空间:

fullLabels = strcat('Label', {' '}, labels);