获取字符串中最后一个字符类型之后的文本

Get the text after the last char-type in string

我有以下字符串类型:

file:///private/var/mobile/Containers/Data/Application/1C02189F-2426-4420-A178-1CC420CBBD3A/tmp/com.test.Test-Inbox/2015-04-23_00002.jpg

我需要访问文件扩展名,在本例中是 .jpg

我想访问最后一个 . 之后的字符串,因为它始终是我想要的文件扩展名,但我不能将它子串到最后 3 个字符,因为扩展名可能有 4 个字符,例如 .docx.mpeg

最好的方法是什么?

我想反转字符串并逐个循环循环获取最新的(在本例中为第一个). 然后当我找到长度时我可以将其子字符串化。

有什么想法吗?

谢谢

您可以使用 String.components(separatedBy:)String 分成由特定字符分隔的子字符串("." 在您的例子中)。由于您知道文件扩展名将在最后一个分隔符之后,您只需调用子字符串数组上的 .last 即可访问它。

let fileNameWithExtension = "file:///private/var/mobile/Containers/Data/Application/1C02189F-2426-4420-A178-1CC420CBBD3A/tmp/com.test.Test-Inbox/2015-04-23_00002.jpg"
let fileExtension = fileNameWithExtension.components(separatedBy: ".").last

你可以简单地使用这个。

let string = "file:///private/var/mobile/Containers/Data/Application/1C02189F-2426-4420-A178-1CC420CBBD3A/tmp/com.test.Test-Inbox/2015-04-23_00002.jpg"
let all = string.components(separatedBy: ".")
let ext = all.last
print(ext)

可以通过

获取
NSURL *stringFilePath = [NSURL URLWithString:@"file:///private/var/mobile/Containers/Data/Application/1C02189F-2426-4420-A178-1CC420CBBD3A/tmp/com.test.Test-Inbox/2015-04-23_00002.jpg"];

NSString *fileName = [stringFilePath lastPathComponent];

并获取扩展名

NSLog(@"%@", fileName.pathExtension)

对于Swift:

let stringFilePath:NSString = "file:///private/var/mobile/Containers/Data/Application/1C02189F-2426-4420-A178-1CC420CBBD3A/tmp/com.test.Test-Inbox/2015-04-23_00002.jpg"
let strFileExtenson = stringFilePath.pathExtension
print(strFileExtenson)

试试这个:

let fileNameWithExtension = "file:///private/var/mobile/Containers/Data/Application/1C02189F-2426-4420-A178-1CC420CBBD3A/tmp/com.test.Test-Inbox/2015-04-23_00002.jpg"
let url = URL(string:fileNameWithExtension)
print(url?.pathExtension ?? "")

Swift3中,你可以轻松地只从路径获取。无需做任何额外的事情。

let filePath:NSString = "the_file_name.png"
let fileExtension = filePath.pathExtension