我有一个存储有类星体URL的数组
http://dr12.sdss3.org/sas/dr12/sdss/spectro/redux/26/spectra/0269/spec-0269-51581-0467.fits
http://dr12.sdss3.org/sas/dr12/sdss/spectro/redux/26/spectra/0329/spec-0329-52056-0059.fits
http://dr12.sdss3.org/sas/dr12/sdss/spectro/redux/104/spectra/2957/spec-2957-54807-0164.fits
http://dr12.sdss3.org/sas/dr12/sdss/spectro/redux/26/spectra/0342/spec-0342-51691-0089.fits
http://dr12.sdss3.org/sas/dr12/sdss/spectro/redux/26/spectra/2881/spec-2881-54502-0508.fits
http://dr12.sdss3.org/sas/dr12/sdss/spectro/redux/26/spectra/0302/spec-0302-51616-0435.fits
http://dr12.sdss3.org/sas/dr12/sdss/spectro/redux/26/spectra/2947/spec-2947-54533-0371.fits
http://dr12.sdss3.org/sas/dr12/sdss/spectro/redux/26/spectra/0301/spec-0301-51942-0460.fits
http://dr12.sdss3.org/sas/dr12/sdss/spectro/redux/104/spectra/2962/spec-2962-54774-0461.fits
http://dr12.sdss3.org/sas/dr12/sdss/spectro/redux/26/spectra/2974/spec-2974-54592-0185.fits
我想根据spec-
旁边的数字来排序URL数组,而不是使用字母顺序。我使用sort
对数组进行了排序,但它没有帮助,因为它总是将3rd
行和2nd last
行放到顶部,因为它们有1
。
我希望有这样的输出
http://dr12.sdss3.org/sas/dr12/sdss/spectro/redux/26/spectra/0269/spec-0269-51581-0467.fits
http://dr12.sdss3.org/sas/dr12/sdss/spectro/redux/26/spectra/0301/spec-0301-51942-0460.fits
http://dr12.sdss3.org/sas/dr12/sdss/spectro/redux/26/spectra/0302/spec-0302-51616-0435.fits
http://dr12.sdss3.org/sas/dr12/sdss/spectro/redux/26/spectra/0329/spec-0329-52056-0059.fits
http://dr12.sdss3.org/sas/dr12/sdss/spectro/redux/26/spectra/0342/spec-0342-51691-0089.fits
http://dr12.sdss3.org/sas/dr12/sdss/spectro/redux/26/spectra/2881/spec-2881-54502-0508.fits
http://dr12.sdss3.org/sas/dr12/sdss/spectro/redux/26/spectra/2947/spec-2947-54533-0371.fits
http://dr12.sdss3.org/sas/dr12/sdss/spectro/redux/104/spectra/2957/spec-2957-54807-0164.fits
http://dr12.sdss3.org/sas/dr12/sdss/spectro/redux/104/spectra/2962/spec-2962-54774-0461.fits
http://dr12.sdss3.org/sas/dr12/sdss/spectro/redux/26/spectra/2974/spec-2974-54592-0185.fits
答案 0 :(得分:1)
如果您将始终拥有此模式,则可以尝试:
fileName = strsplit(myUrl, '/')(end)
number = strsplit(fileName(5:end), '.')(0)
要引导你完成这一事业,理解就是一切......
我们从
开始http://dr12.sdss3.org/sas/dr12/sdss/spectro/redux/26/spectra/0269/spec-0269-51581-0467.fits
首先,我们在/
个字符上拆分网址。这将返回从该字符分割的字符串向量。由于要在最终/
之后排序的号码,我们可以通过end
来抓取最后一个。现在我们有了
spec-0269-51581-0467.fits
接下来,让我们从号码中删除那个讨厌的spec-
。这个步骤实际上不是,因为它在所有网址中都是不变的,但我们只是为了好玩而这样做。我们可以使用Matlab的子字符串在-
之后使用fileName(5:end)
来抓取字符。这将创建一个以第5个字符开头的字符串(在本例中为0)并继续结束。好的,现在我们有了
0269-51581-0467.fits
看起来不错!同样,这部分也不是完全必要的,但为了以防万一您可能需要,我已经包含了它。我们可以再次使用strsplit
函数,但这次在.
上拆分,并通过传递0来获取第一个元素。现在,我们已经
0269-51581-0467
来吧,把那个小家伙分类,你很高兴去吧!