无法比较通过终端输入的字符串与Swift中的另一个字符串

时间:2015-01-22 12:43:04

标签: swift nsstring

我使用以下代码使用swift实现基本字典。但是编译器没有返回任何值。我不知道什么似乎是问题。需要帮助!

P.S我是Swift的新手。

import Foundation

var dic = ["Nil":"Neel Goswami","Kirana":"Kinara Shah","Sapre":"Rohan Sapre","JP":"Joy Patel","Shreya":"Shrey Bhat","Ali Bhai":"Aalisha Sheth","Gandhi":"Shlok Gandhi","Binti":"Biyanta Shah","Udgam":"Aayushi Shah"]

dic["Wary"] = "Aishwary Rawat"
dic["Sixer"] = "Ruchir Patel"
dic["Bhikhari"] = "Aabhas Singhal"

var str: String? = "Initial"

println("Enter the pet name: ")

str = NSString(data: NSFileHandle.fileHandleWithStandardInput().availableData, encoding:NSUTF8StringEncoding)

var st: String = str!

for (pet, act) in dic
{
    if (pet == st) {
        println("His/Her actual name is \(act)")
    }
}

1 个答案:

答案 0 :(得分:1)

问题是来自用户输入的字符串包含一个尾随的换行符\n)。您可以通过更改

来解决这个问题
var st: String = str!

var st = str!.stringByTrimmingCharactersInSet(NSCharacterSet.newlineCharacterSet())

或者,使用

var st = str!.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet())

也会删除前导和尾随空格字符。

请注意,您可以将for循环简化为字典查找:

if let act = dic[st] {
    println("His/Her actual name is \(act)")
}