获取字符串中最后一个字符类型之后的文本
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
我有以下字符串类型:
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