我怎么能一个字符串字母和数字?

194(30天)
我用一个列表框显示形状的名称我shapefile存储。我使用排序函数按字母顺序列出它们。这是伟大的,但当我得到上面的东西9不工作很我想要的方式。例如,我的列表框看起来像这样:
圈1
10圆
圆11
圆12
圆13
圈2
圆3
4圈
圈5
圆6
7圈
圆8
9圈
椭圆1
椭圆2
矩形1
我想点办法,让它上面的圆圈中9追求9而不是1。
2的评论
1月
1月 2012年7月17日
奥列格,这是真的。前导零让流水号是一样的字母顺序排列。

登录置评。

接受的答案

Teja Muppirala
Teja Muppirala 2012年7月17日
很丑,但工作原理:
UnsortedText = {“BBB 1”;“AAA 10”;“AAA 9”;“AAA 1”;“BBB 2”;“BBB 19”;“BBB 9”;“CCC 0”;“CCC 9”;“CCC 80”;“CCC 7”};
R = cell2mat(正则表达式(UnsortedText,(? <名称> \ D +) (? < num > \ D +) ',“名字”));
tmp = sortrows ([{R。名称}’num2cell (cellfun (@ (x) str2double (x) {R.Nums}’))));
SortedText = strcat (tmp (: 1), cellfun (@ (x) num2str (x) tmp (:, 2),“unif”,0))
会有一个更简单的方法…

更多的答案(4)

瑞安
瑞安 2012年7月17日
一个= {“1”,“9”,“10”,“5”};%按照你要求的顺序
但如:
一个= {“1”,“10 B”,“4”,《B 2》};
导致:
ans = 1, B2,一个4B10
可能会有一个更好的字母数字字符串FEX分选机,我错过了我的快速搜索和特定提交一些额外的设置。你可以单独排序每个形状然后连接成一个数组如果这个函数最终是你最好的选择。

Azzi Abdelmalek
Azzi Abdelmalek 2012年7月17日
编辑:Azzi Abdelmalek 2012年7月17日
= strvcat列表(“大约1”,《新闻调查中心2》,“大约10”,“大约11”,
“大约12”,' d 1 ',《d 2》,“10 d”,“d 11”,“d 12”,“ee 15”,“dhgt 9”,“阿兹45”)
[n m] =大小(列表);list1 =[];用于= [];listn = [];
k = 1: n;
指数=找到(isstrprop(列表(k,:),“数字”),1)
list1 = strvcat (list1列表(k, 1:索引1));
用于= strvcat(用于列表(k指数:结束);
listn = [listn; str2num(列表(k,指数:结束)));
结束
list1c = cellstr (list1);
list2c = cellstr(用于);
listc = sortrows ([list1c list2c])
listc1 = listc (: 1);
list2n = str2num (char (listc (:, 2)))
result1 =[];编写此表达式k = 1; result2 = [];
k < = n
印第安纳州= strmatch (listc1 (k), listc1);
n1 = min(印第安纳州);n2 = max(印第安纳州);
result1 =编写此表达式[result1;编写此表达式listc1 (n1: n2)]
result2 = [result2;cellstr (num2str(排序(list2n (n1: n2)))))
k = k +长度(印第安纳州)
结束
res1 = char (result1)编写此表达式;它= char (result2); res = [];
k = 1: n
res = strvcat (res, [strtrim (res1 (k,:))' 'strtrim(它(k,:))))
结束
%的结果是在res变量

马文塞弗特
马文塞弗特 2020年4月22日
它的一个老问题,但仍也许我找到了一个简单的解决方案:
(这工作只有只有一个数字的字符串)
数量= 0(1、长度(UnsortedText));
2 = 1:长度(UnsortedText)
日志= isstrprop (UnsortedText {2},“数字”)
string_name = UnsortedText {2};
%这将创建一个新数组只包含数字
数字字符串(ii) = (string_name(日志));
结束
[~,a_order] =排序(数字);
SortedText = UnsortedText (a_order);

Stephen23
Stephen23 2023年4月27日
到目前为止最简单的方法是 下载 的作用函数:
然后使用它是这样的:
C = {“BBB 1”;“AAA 10”;“AAA 9”;“AAA 1”;“BBB 2”;“BBB 19”;“BBB 9”;“CCC 0”;“CCC 9”;“CCC 80”;“CCC 7”}
C =11×1单元阵列
{“BBB 1”} {‘AAA 10} {‘AAA 9} {‘AAA 1} {“BBB 2} {“BBB 19”} {“BBB 9}{的CCC 0}{的CCC 9}{的CCC 80} {“CCC 7”}
D =作用(C)
D =11×1单元阵列
{' AAA 1 '} {‘AAA 9} {‘AAA 10} {“BBB 1”} {“BBB 2} {“BBB 9} {“BBB 19”}{的CCC 0} {“CCC 7”}{的CCC 9} {“CCC 80”}

类别

找到更多的在字符和字符串帮助中心文件交换

下载188bet金宝搏

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!