2016-08-13 43 views
0

我有一個類星體的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 

回答

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 

首先我們在/字符上分割URL。這將返回一個從這個角色分割出來的字符串向量。由於要排序的號碼在最後的/之後,我們可以通過end來抓取最後一個號碼。現在我們有

spec-0269-51581-0467.fits 

接下來,讓我們從數字去除討厭的spec-。這一步實際上並不是,因爲它在所有網址中都是不變的,但我們只是爲了好玩而做。我們可以使用Matlab的子串來獲取-之後的字符,使用fileName(5:end)。這將創建一個以第5個字符開始的字符串(在本例中爲0)並繼續到最後。好,現在我們有

0269-51581-0467.fits 

看起來不錯!同樣,這部分也不是完全必要的,但爲了萬一您可能需要,以防萬一,我已經包含它。我們可以通過傳遞一個0。現在再次使用strsplit功能,但這次拆分的.,搶第一要素,我們有

0269-51581-0467 

繼續前進,那種小傢伙,你是好走!

+1

謝謝你,我用了你的第一個答案的變體。在完成我的工作後,剛剛來到這裏「謝謝你」。我已經完成了我的任務,將它分解到'-'上,它給了我4個字符串,整理出了第二個字符串,並使用下面的索引:using [this](http://stackoverflow.com/questions/37948031/removing-非唯一值和重新排列向量)和[this](https://www.mathworks.com/matlabcentral/answers/160560-access-cell-array-inside-another-cell-array)問題:I整理出另一個,並與'strcat'結合以獲取完整的URL。 –