Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 如何在Swift中比较条件中的大小写字母_String_Swift - Fatal编程技术网

String 如何在Swift中比较条件中的大小写字母

String 如何在Swift中比较条件中的大小写字母,string,swift,String,Swift,如果这是一个重复的道歉。我有一个名为inputString()的助手函数,它接受用户输入并返回字符串。我想根据输入的是大写还是小写字符继续。这是我的密码: print("What do you want to do today? Enter 'D' for Deposit or 'W' for Withdrawl.") operation = inputString() if operation == "D" || operation == "d" {

如果这是一个重复的道歉。我有一个名为inputString()的助手函数,它接受用户输入并返回字符串。我想根据输入的是大写还是小写字符继续。这是我的密码:

 print("What do you want to do today? Enter 'D' for Deposit or 'W' for Withdrawl.")

    operation = inputString()

    if  operation == "D" || operation == "d" {

        print("Enter the amount to deposit.")

我的程序在第一个print函数后退出,但没有编译器错误。我不知道我做错了什么

重要的是要记住,字符串中会出现一些空白字符,有时,这些空白字符会导致类似这样的问题

因此,当您确定两个字符串应该相等时,在它们的两端使用某种非空白字符打印它们是很有用的

例如:

print("Your input was <\(operation)>")

有关您遇到的错误的原因,请参阅。本质上,我们需要删除任何空白或非打印字符,如换行符等

我还使用了.uppercaseString来简化比较

经修订的守则如下:

func inputString() -> String {
    var keyboard = NSFileHandle.fileHandleWithStandardInput()
    var inputData = keyboard.availableData
    let str: String = (NSString(data: inputData, encoding: NSUTF8StringEncoding)?.stringByTrimmingCharactersInSet(
    NSCharacterSet.whitespaceAndNewlineCharacterSet()))!
    return str
}

print("What do you want to do today? Enter 'D' for Deposit or 'W' for Withdrawl.")

let operation = inputString()

if operation.uppercaseString == "D"  {
    print("Enter the amount to deposit.")
}

你试过使用一些断点吗?
inputString()
方法看起来像什么?func inputString()->String{let keyboard=NSFileHandle.fileHandleWithStandardInput()let inputData=keyboard.availableData将NSString(数据:inputData,编码:NSUTF8StringEncoding)返回为!String}当我在将inputString的结果分配给operation之后立即调用print时,我会得到输入的值,因此我知道它正在被分配。我觉得我在Swift中缺少了一些关于字符串的明显内容。@jlace嗨,如果您在原来的帖子中添加了
inputString
函数(正如您在评论中所做的那样),可能会对其他读者有所帮助。代码片段解决了这个问题。简单的英语忽略了实际的问题。我已经发布了一个链接,解释了问题的原因,以便为海报增光。谢谢@nhgrif。我希望找到一个不涉及其他类的纯快速解决方案。必须在readline()上阅读。再次感谢。
readLine()
非常简单。它从标准输入读取下一个换行符或EOF,该换行符或EOF位于第一位,并将其作为可选字符串返回
string?
。它基本上正是您的
inputString()
方法试图做的事情,只是做得更好,而且非常迅速。
func inputString() -> String {
    var keyboard = NSFileHandle.fileHandleWithStandardInput()
    var inputData = keyboard.availableData
    let str: String = (NSString(data: inputData, encoding: NSUTF8StringEncoding)?.stringByTrimmingCharactersInSet(
    NSCharacterSet.whitespaceAndNewlineCharacterSet()))!
    return str
}

print("What do you want to do today? Enter 'D' for Deposit or 'W' for Withdrawl.")

let operation = inputString()

if operation.uppercaseString == "D"  {
    print("Enter the amount to deposit.")
}