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

标签 ios objective-c string nsstring nsurl

我正在开发一个 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/

相关文章:

ios - Firemonkey在iOS中不显示希伯来文字

iphone - Objective-C 和 Ruby 中的数据编码

c++ - 如何组合两个文件路径(作为字符串)在 C++ 中删除额外的 "/"

c - 如何为 %20s 的 scanf 删除额外输入

vb.net - 是否有任何工具可以为 Visual Studio 2008/2005 转换多行文本?

ios - 如何从网络应用程序获取 iPhone 电话号码?

iOS 仪器 : Timer's time is not matching with the sum of running times in call tree

c++ - 如何在Xcode项目中使用dlib face_recognition?

ios - 在 performBatchUpdates 中重新加载 collectionview 时未调用 UICollectionview cellForItemAtIndexPath

objective-c - iOS 上的自定义键盘 : How do I access the UITextField?