String 如何在Swift中比较条件中的大小写字母
如果这是一个重复的道歉。我有一个名为inputString()的助手函数,它接受用户输入并返回字符串。我想根据输入的是大写还是小写字符继续。这是我的密码: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" {
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.")
}