如何在Swift中使用rangeOfString?

时间:2015-03-16 05:17:54

标签: swift

首先,我试图弄清楚“rangeOfString”的功能。根据我自己的理解,我认为“rangeOfString”是在字符串中找到一些指定事物的函数,就像一个单词。如“a”这个词是“苹果”的第一部分。这个解释如何在函数的返回中显示。 NSRange是该函数的返回类型。由于我英语不好,我无法理解'NSRange'的官方参考。

问题是:

  1. 我对“rangeOfString”的理解是否正确?
  2. 如何使用此功能?如何在该功能中设置参数?
  3. 非常感谢您的指导和帮助。

    Ethan Joe

2 个答案:

答案 0 :(得分:2)

有一种英语谚语:“大海捞针”,指的是在大海捞针中难以找到针,因为针和干草叶都很长而且很干,干草堆通常比较大针。

假设你有一大块文字,你的“草堆”。你想知道在那个干草堆里你能找到一小块文字,你的“针”。您可以使用rangeOfString消息在大海捞针中找到针。

以下是一个例子:

$ xcrun swift -framework Foundation
  1> import Foundation 
  2> let haystack: NSString = "the function to find some specify thing in the string" 
haystack: NSString = "the function to find some specify thing in the string"
  3> let needle: NSString = "function"
needle: NSString = "function"
  4> haystack.rangeOfString("function") 
$R0: NSRange = location=4, length=8
  5>  

rangeOfString消息返回NSRange,其中包含两部分:

  • location是指针在大海捞针中开始的指针。干草堆开头的索引为零。
  • length是指针的长度。

你可能已经注意到length并不是必需的,因为你可以问针的长度(needle.length)。但NSRange用于length部分可能不明显的其他内容。

如果针不在大海捞针中,rangeOfString会返回一个看起来很滑稽的位置:

  5> haystack.rangeOfString("Ethan Joe")
$R1: NSRange = location=9223372036854775807, length=0

说什么?好吧,它实际上返回了一个名为NSNotFound的常量:

  6> NSNotFound
$R2: Int = 9223372036854775807

您可以使用该常数来检查针是否缺失:

  7> if haystack.rangeOfString("Ethan Joe").location == NSNotFound { 
  8.     println("Where did he go?") 
  9. }    
Where did he go?

答案 1 :(得分:1)

这里是样本

let myNSString: NSString = "12345678"
        let firstDigit = myNSString.substringWithRange(NSRange(location: 0, length: 1))
        let secondDigit = myNSString.substringWithRange(NSRange(location: 1, length: 1))
        let thirdDigit = myNSString.substringWithRange(NSRange(location: 2, length: 4))

//firstDigit = 1
//secondDigit = 2
//thirdDigit = 3456