我正在开发一个 iOS 应用程序,我需要做的事情之一是遍历 URL 并用我自己的自定义协议(protocol)替换第一个协议(protocol)部分。
如何删除“://”之前的 NSString 的前几个字符?
因此,例如我需要转换以下内容:
http://website.com --> cstp://website.com
ftp://website.com --> oftp://website.com
https://website.com --> ctcps://website.com
我面临的主要问题是,我不能只从 URL 字符串中删除前“x”个字符。在到达“://”字符之前,我必须检测有多少个字符。
那么如何计算从字符串的开头到“://”字符有多少个字符呢?
一旦我知道了这一点,我就可以简单地执行以下操作来删除字符:
int counter = ... number of characters ...
NSString *newAddress = [webURL substringFromIndex:counter];
谢谢你的时间,丹。
最佳答案
http://website.com
是一个 URL,http
是 URL 的方案部分。而不是字符串操作,我建议使用NSURLComponents
正是为此目的而制作的类:检查、创建和修改 URL:
NSString *originalURL = @"http://website.com";
NSURLComponents *urlcomp = [[NSURLComponents alloc] initWithString:originalURL];
if ([urlcomp.scheme isEqualToString:@"http"]) {
urlcomp.scheme = @"cstp";
} else if ([urlcomp.scheme isEqualToString:@"ftp"]) {
urlcomp.scheme = @"otfp";
}
// ... handle remaining cases ...
NSString *modifiedURL = [urlcomp string];
NSLog(@"%@", modifiedURL); // cstp://website.com
如果案例数量增加,则字典映射更容易
管理:
NSDictionary *schemesMapping = @{
@"http" : @"cstp",
@"ftp" : @"otfp"
@"https" : @"ctcps" };
NSURLComponents *urlcomp = [[NSURLComponents alloc] initWithString:originalURL];
NSString *newScheme = schemesMapping[urlcomp.scheme];
if (newScheme != nil) {
urlcomp.scheme = newScheme;
}
NSString *modifiedURL = [urlcomp string];
关于ios - 获取 NSString 在字符串中的位置 - iOS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30301276/