获取NSString在字符串中的位置 - iOS

时间:2015-05-18 10:52:15

标签: ios objective-c string nsstring nsurl

我正在开发一个iOS应用程序,这是我需要做的事情之一,用于浏览URL并用我自己的自定义协议替换第一个协议部分。

如何在"://"?

之前删除NSString的前几个字符

例如,我需要转换以下内容:

int counter = ... number of characters ...
NSString *newAddress = [webURL substringFromIndex:counter];

我面临的主要问题是,我无法删除第一个' x' URL字符串中的字符数。我必须检测到有多少个字符,直到"://"达到了字符。

那么如何计算从字符串的开头到"://"有多少个字符?字符?

一旦我知道这一点,我就可以简单地执行以下操作来删除字符:

shiro.ini

谢谢你的时间,Dan。

2 个答案:

答案 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];