我正在开发一个iOS应用程序,这是我需要做的事情之一,用于浏览URL并用我自己的自定义协议替换第一个协议部分。
如何在"://"?
之前删除NSString的前几个字符例如,我需要转换以下内容:
int counter = ... number of characters ...
NSString *newAddress = [webURL substringFromIndex:counter];
我面临的主要问题是,我无法删除第一个' x' URL字符串中的字符数。我必须检测到有多少个字符,直到"://"达到了字符。
那么如何计算从字符串的开头到"://"有多少个字符?字符?
一旦我知道这一点,我就可以简单地执行以下操作来删除字符:
shiro.ini
谢谢你的时间,Dan。
答案 0 :(得分:4)
http://website.com
是网址,http
是网址的计划部分。我会建议使用。而不是字符串操作
完全为此目的而制作的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];
答案 1 :(得分:3)
您可以使用:
NSRange range = [urlString rangeOfString:@"://"];
range.location
将为您提供"://"
开始的第一个索引,您可以将其用作:
NSString *newAddress = [urlString substringFromIndex:range.location];
并附加你的前缀:
NSString *finalAddress = [NSString stringWithFormat:@"%@%@", prefixString, newAddress];