解析具有特定条件的字符串

Parse a string with specific condition

如何 trim 我的字符串是这种形式:

https://xxx.kflslfsk.com/kjjfkskfjksf/v1/files/media/93939393hhs8.jpeg

到这个?

media/93939393hhs8.jpeg

我想删除倒数第二个斜线之前的所有字符 /

我可以使用 stringByTrimmingCharactersInSet 但我不知道如何指定我想要的条件:

let trimmedString = myString.stringByTrimmingCharactersInSet(
  NSCharacterSet.whitespaceAndNewlineCharacterSet() // what here in my case ??
)

上面是去掉空格,这里不是这样。

你不是在修剪,你是在解析。

没有一个调用可以满足您的需求。我建议编写一个代码块,使用 componentsSeparatedByString("\n") 将其分成几行(每行一个 URL),然后分别解析每一行。

您可以在每一行上使用 componentsSeparatedByString("/") 将其分成斜杠之间的片段,然后 assemble 最后两个片段在一起。

(我故意不为您编写代码。您应该自己编写代码。我只是为您指明正确的方向。)

您也许还可以使用 NSURLComponents 将每一行视为 URL,但我不确定您之前如何获得 URL 的最后一部分使用该方法的文件名(例如 "media " 或 "lego")。

由于字符串是 URL 获取路径组件,删除除最后 2 项以外的任何内容,并使用斜杠分隔符连接这些项目。

if let url = NSURL(string:"https://xxx.kflslfsk.com/kjjfkskfjksf/v1/files/media/93939393hhs8.jpeg"), pathComponents = url.pathComponents {
  let trimmedString = pathComponents.suffix(2).joinWithSeparator("/")
  print(trimmedString)
}