获取NSString在string-iOS中的位置
我正在开发一个iOS应用程序,我需要做的一件事就是浏览URL并用我自己的自定义协议替换第一个协议部分 如何删除“:/”之前NSString的前几个字符 例如,我需要转换以下内容:获取NSString在string-iOS中的位置,ios,objective-c,string,nsstring,nsurl,Ios,Objective C,String,Nsstring,Nsurl,我正在开发一个iOS应用程序,我需要做的一件事就是浏览URL并用我自己的自定义协议替换第一个协议部分 如何删除“:/”之前NSString的前几个字符 例如,我需要转换以下内容: http://website.com --> cstp://website.com ftp://website.com --> oftp://website.com https://website.com --> ctcps://website.com 我面临的主要问题是,我不能从URL
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];
谢谢您的时间,丹。您可以使用:
NSRange range = [urlString rangeOfString:@"://"];
range.location
将为您提供从“:/”
开始的第一个索引,您可以将其用作:
NSString *newAddress = [urlString substringFromIndex:range.location];
并附加您的前缀:
NSString *finalAddress = [NSString stringWithFormat:@"%@%@", prefixString, newAddress];
您可以使用:
NSRange range = [urlString rangeOfString:@"://"];
range.location
将为您提供从“:/”
开始的第一个索引,您可以将其用作:
NSString *newAddress = [urlString substringFromIndex:range.location];
并附加您的前缀:
NSString *finalAddress = [NSString stringWithFormat:@"%@%@", prefixString, newAddress];
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
如果案例数量增加,那么字典映射就更容易实现
管理:
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
如果案例数量增加,那么字典映射就更容易实现
管理:
非常感谢你。真的很有帮助:)非常感谢。真的很有帮助:)哇!这很有道理。只有一件事,当用户在没有方案的情况下复制URL链接时会发生什么。在我的例子中,我只是在它前面连接
http://
。但是此代码如何检测是否没有方案?@Supertecnoboff:[[NSURLComponents alloc]initWithString:originalURL]
如果originalURL
不是有效的URL,例如,如果方案丢失,则返回nil
。Ok。非常感谢,我恐怕不能给你打勾,但我确实投票支持了你的答案。我认为这个方法比上面的方法可靠得多。再次感谢:)@Supertecnoboff:欢迎你(完全取决于你想接受哪个答案,没问题)!哇!这很有道理。只有一件事,当用户在没有方案的情况下复制URL链接时会发生什么。在我的例子中,我只是在它前面连接http://
。但是此代码如何检测是否没有方案?@Supertecnoboff:[[NSURLComponents alloc]initWithString:originalURL]
如果originalURL
不是有效的URL,例如,如果方案丢失,则返回nil
。Ok。非常感谢,我恐怕不能给你打勾,但我确实投票支持了你的答案。我认为这个方法比上面的方法可靠得多。再次感谢:)@Supertecnoboff:欢迎你(完全取决于你想接受哪个答案,没问题)!