Swift 2.0中的字符串索引:我如何处理索引字符串?

时间:2016-02-11 19:39:15

标签: swift swift2

我正在尝试获取字符串的内容:

var oldString = "hi this \t is my \t string"
oldString = String(oldString.componentsSeparatedByString("\t"))
print(oldString[1])
  

我得到了错误:“'下标'不可用:不能下标String   与Int ...“

我如何访问另一个字符串中包含的字符串? 我想出的唯一方法是使用:

逐个字符
for index in content.characters.indices{
    print(String(oldString[index]))
}

上面的代码导致:

h,
i,
t,
h,
..

我需要:

hi this,
is my,
string

提前谢谢!

3 个答案:

答案 0 :(得分:1)

您应该阅读错误消息并找出错误消息的来源。

您的String(oldString.componentsSeparatedByString("\t"))为您提供String而不是[String]

您需要做的是将oldString.componentsSeparatedByString("\t")分配给数组:

let stringArray = oldString.componentsSeparatedByString("\t")
for str in stringArray {
  print(str)
}

答案 1 :(得分:1)

在swift中,您可以扩展任何类型并为不同的操作添加重载。在下面的示例中,我们创建了一个扩展,允许您下标String返回每个单词并从字符串中获取数组。

只需将其粘贴到游乐场进行测试:

extension String {

    func array() -> [String] {
        return self.componentsSeparatedByString("\t")
    }

    subscript (i: Int) -> String {
        return self.componentsSeparatedByString("\t")[i]
    }
}

添加扩展程序后,您可以在整个应用程序中使用它,如下所示:

var str = "hi this \t is my \t string"

print(str[0]) //prints hi this

for i in str.array() {
    print(i)
}

打印:

  

你好

     

是我的

     

的字符串

答案 2 :(得分:0)

    var oldString = "hi this \t is my \t string"
    let stringArray = oldString.componentsSeparatedByString("\t")

    //In case you also need the index while iterating
    for (index, value) in stringArray.enumerate(){
        print("index is \(index) and string is \(value)")
    }

    for str in stringArray{
        print(str)
    }

Output will be as follows
index is 0 and string is hi this 
index is 1 and string is  is my 
index is 2 and string is  string

hi this 
 is my 
 string