swift:如何将textField中的字符串分配给另一个字符串?

时间:2015-09-08 22:13:07

标签: string swift assign

swift:如何将textField中的字符串分配给另一个字符串?

例如:

如果用户在texField“abc”中写入,我希望程序/应用程序输出“DoReMi”

a=Do  
b=Re  
c=Mi 

感谢

2 个答案:

答案 0 :(得分:1)

试试这样:

let inputString = "abc"
// create a dictionary with your notes
let notes = ["a":"Do","b":"Re","c":"Mi","d":"Fa","e":"So","f":"La","g":"Ti"]
// map the value of your string characters keys
let output = "".join( Array(inputString).map{ notes[ String($0) ] ?? "" } )
println(output)   // "DoReMi"

如果您希望它以用户类型的形式发生,您只需将iconTield addTarget更改为控制事件编辑,如下所示:

import UIKit

class ViewController: UIViewController {

    @IBOutlet weak var textField: UITextField!
    @IBOutlet weak var label: UILabel!

    let notes = ["a":"Do","b":"Re","c":"Mi","d":"Fa","e":"So","f":"La","g":"Ti"]

    override func viewDidLoad() {
        super.viewDidLoad()
        textField.addTarget(self, action: "editingChanged:", forControlEvents: UIControlEvents.EditingChanged)
        textField.becomeFirstResponder()
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    func editingChanged(sender: UITextField) {
        sender.text = sender.text!.notesOnly
         label.text = String(Array(textField.text!.characters).map{ self.notes[ String($0) ] ?? "" })
    }

}

extension String {
    var notesOnly: String {
        return componentsSeparatedByCharactersInSet(NSCharacterSet(charactersInString: "abcdefg").invertedSet).joinWithSeparator("")
    }
}

答案 1 :(得分:0)

我希望我能理解你的问题:你希望能够接受一个字符串,然后根据用户输入的内容输出一个字符串,这是正确的吗?您可以使用词典完成此操作。在视图控制器文件的顶部添加一个如下变量:

var myDic = ["a":"Do", "b":"Re", "c":"Mi"]

然后您要做的就是检查文本字段字符串中的每个字符,这可能看起来像这样:

let stringArr = Array(textField.text)
var outStr = ""
for char in stringArr {
    if let c = myDic[String(char)] {
        outStr = outStr + c
    }
}
println(outStr)