【问题标题】:How to select a sub-string from an NSString using a key word?如何使用关键字从 NSString 中选择子字符串?
【发布时间】:2014-12-20 08:15:41
【问题描述】:

我编写了一个代码 sn-p,它将文本字段的内容写入文件。不幸的是,我的代码根据操作系统不同写入文件路径

在优胜美地,路径是

  file:///var/folders/qg/....../myfile.txt

在山狮中,路径是

  file://localhost/var/folders/yx....../myfile.txt

我有一个 API,它将文件路径作为 /var/folder/xx/...../myfile.txt

我想知道是否有办法从 /var/.. 创建一个子字符串,直到路径结束。

【问题讨论】:

标签: ios objective-c cocoa nsstring


【解决方案1】:

您可以按照以下方式进行操作:

// Lets say pathString is an NSString of the path  
NSRange varRange = [pathString rangeOfString:@"/var/"];  
NSString *correctPath = [pathString substringFromIndex:varRange.location];  

在上面的示例中,您使用NSString 的实例方法rangeOfString: 来接收所需子字符串的范围,在本例中为/var/,并将其存储到范围变量中。

然后你创建一个新的NSString变量,使用原来的pathString,使用实例变量substringFromIndex,它返回一个新的子字符串,它从你选择的索引开始,到最后结束字符串(您提供我们收到的范围位置,以识别/var/ 的开始位置)。

祝你好运。

【讨论】:

    【解决方案2】:

    如果文件路径存储在 NSString *yourPathString 中,则

    NSString *resultString= [yourPathString substringFromIndex:[yourPathString rangeOfString:@"/var"].location]];
    
    NSLog(@"Final result : %@", resultString);
    

    试试这个代码,希望对你有帮助。

    【讨论】:

    • 但是索引会因操作系统而异,不是吗?
    • 是的,它会自动选择,你会得到从“/var/ ... / tillEnd”开始的新字符串希望这是你要求的吗?
    • 这样,你不必关心你的代码在哪台机器上运行。
    • 我很乐意,但我首先看到了其他人的代码。不过我确实投了赞成票。
    【解决方案3】:

    根据您调用资源的方式、需要保存的方式以及该 API 正在寻找什么,您将希望使用 NSURL 方法,而不是字符串。具体来说,听起来你最有兴趣使用absolutePathrelativePathresourceIdentifierpathComponents

    我建议阅读 Apple 的 URL Loading System 指南或 NSHipster's article 以获得更易于阅读的答案。

    【讨论】:

      猜你喜欢
      • 2012-11-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多