在这种情况下,我有一个纬度/经度坐标的单元格数组,我将从文件中读取它们作为格式为字符串的字符串:
x = {'27° 57'' 21.4" N', '7° 34'' 11.1" W'}
其中°
实际是度数符号(U + 00B0)。
我想使用strsplit()
或等效的方法来找出数字分量,但是我不知道如何将度数符号指定为定界符。
我','
不愿简单地在处分割并索引出该数字,因为如上所示,我不知道期望多少位数。
我在网站的其他地方发现了以下建议:
x = regexp(split{1}, '\D+', 'split')
但是,这也分隔了十进制数字的整数和十进制部分。
有没有strsplit()
其他选择,或者我可以使用的其他选择?
您可以将度数符号从数据文件复制粘贴到M文件脚本中。MATLAB在其字符串中完全支持Unicode字符。例如:
strsplit(str, {'°','"',''''})
在三个符号处分割字符串。
或者,您可以使用sscanf
(或者fscanf
如果直接从文件读取)解析字符串:
str = '27° 57'' 21.4"';
dot( sscanf(str, '%f° %f'' %f"'), [1, 1/60, 1/3600] );
轻微的技术麻烦:Matlab不完全支持Unicode字符,仅基本的多语言平面中的字符可以用单个UCS-2代码点表示。不支持需要UTF-16代理对的字符(如表情符号)。(我并不是说这是徒劳的;我实际上是想有时使用表情符号,并将其作为一个真正的用例运行。)
@AndrewJanke:我不知道这一点,感谢您的澄清!