簡體   English   中英

Swift -sort數組由substring

[英]Swift -sort array by substring

我有一個字符串數組(它們是連接到字符串的url),在每個字符串的中間它們都有一個UUID().uuidString ,帶有count變量和.jpg。

let arr = [ htps://firebasestorage.googleapis.com/myApp.appspot.com/o/users%Mxd6EUO5l2LK-mKa%2F4606E275-B2C5-4A69-B997-01423ABFE3B7%2FBE26726D-B8E5-47C8-9A18-504D23B99090_3.jpg?alt=media&token=e215e6a1-f5b9-431e-83a3,

htps://firebasestorage.googleapis.com/myAapp.appspot.com/o/users%-Ll_Mxd6EUO5l2LK-mKa%2F4606E275-B2C5-4A69-B997-01423ABFE3B7%2FBE26726D-B8E5-47C8-9A18-504D23B99090_1.jpg?alt=media&token=f350cf36-4c4e-4faf,

htps://firebasestorage.googleapis.com/myAPp.appspot.com/o/users%mKa%2F4606E275-B2C5-4A69-B997-01423ABFE3B7%2FBE26726D-B8E5-47C8-9A18-504D23B99090_2.jpg?alt=media&token=123uyqtr

....]

第一個元素在它的中間: 2FBE26726D-B8E5-47C8-9A18-504D23B99090_3.jpg

第二個元素在它的中間: 2FBE26726D-B8E5-47C8-9A18-504D23B99090_1.jpg

第三個元素在它的中間: 2FBE26726D-B8E5-47C8-9A18-504D23B99090_2.jpg

第四個元素,然后......

如何根據UUID的子字符串和_x.jpg或僅僅_x.jpg對這個數組中的字符串進行排序?

僅供參考我可以事先訪問UUID

您可以這樣對數組進行排序

  • 將字符串(后面)轉換為URL。
  • 獲取每個URL的lastPathComponent
  • 從最后一個下划線字符中提取子字符串到結尾。
  • 比較字符串與compare:numeric選項或localizedStandardCompare:

如果您的起始數組是這樣的

let array = ["htps://firebasestorage.googleapis.com/myApp.appspot.com/o/users%Mxd6EUO5l2LK-mKa%2F4606E275-B2C5-4A69-B997-01423ABFE3B7%2FBE26726D-B8E5-47C8-9A18-504D23B99090_3.jpg?alt=media&token=e215e6a1-f5b9-431e-83a3","htps://firebasestorage.googleapis.com/myAapp.appspot.com/o/users%-Ll_Mxd6EUO5l2LK-mKa%2F4606E275-B2C5-4A69-B997-01423ABFE3B7%2FBE26726D-B8E5-47C8-9A18-504D23B99090_1.jpg?alt=media&token=f350cf36-4c4e-4faf","htps://firebasestorage.googleapis.com/myAPp.appspot.com/o/users%mKa%2F4606E275-B2C5-4A69-B997-01423ABFE3B7%2FBE26726D-B8E5-47C8-9A18-504D23B99090_2.jpg?alt=media&token=123uyqtr"]

嘗試一下這個。

您可以根據您的jpg后綴進行拆分,然后根據您的UUID進行拆分。

let sortedArray = array.sorted { (first, second) -> Bool in

let firstIndex = Int((first.components(separatedBy: ".jpg")[0]).components(separatedBy: "FBE26726D-B8E5-47C8-9A18-504D23B99090_")[1]) ?? -1
let secondIndex = Int((second.components(separatedBy: ".jpg")[0]).components(separatedBy: "FBE26726D-B8E5-47C8-9A18-504D23B99090_")[1]) ?? -1
return firstIndex < secondIndex
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM