繁体   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