我有一个数字字符串的单元格数组,例如:
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'}
答案 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);