2017-07-26 118 views
0

后的文字,我有以下字符串类型:获得最后一个字符类型的字符串

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

什么是最好的方法来做到这一点?

我想在反向的字符串和循环字符char得到最新的(在这种情况下第一).,然后当我找到长度,我可以substring它。

有什么想法?

感谢

+0

看到这个https://stackoverflow.com/questions/17828044/is-it-possible-to-find-the-file-extension-of-a-uiimage –

+0

这种情况下,是具体的图像,在我的情况下,该文件可以是任何类型,并且我得到一个指针URL而不是原始的NSData类型。感谢您指出, –

回答

1

您可以使用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 
+0

哇......这是伟大的,没有新的'字符串功能 –

1

您可以简单地使用它。

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) 
+0

这是伟大的! –

1

您可以通过

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) 

对于斯威夫特:

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) 
+0

这个问题明确要求'Swift',那么为什么Objective-C的答案呢? –

+0

@DávidPásztor - 检查更新 – Govaadiyo

0

试试这个:

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 ?? "") 
2

Swift3,只能从路径中轻松获取。不需要做任何额外的事情。

let filePath:NSString = "the_file_name.png" 
let fileExtension = filePath.pathExtension 
相关问题