Swift change String with range&和shouldChangeTextInRange如何知道退格

时间:2015-11-18 06:54:20

标签: textview swift2 mention

我是斯威夫特的新手,我很多RND但是我无法获得成功。我有替换字符串与范围我正在使用此代码但它的返回错误我正在使用swift 2.0

let aString: String = txt_description.text
        let newString = aString.stringByReplacingOccurrencesOfString(varattherate, withString:"@\(getText) ", options: NSStringCompareOptions.LiteralSearch, range: NSMakeRange(0, 10))

急剧问题是,我已从字符串中替换文本 我的字符串是"我的名字是@test,但我想要改变@ te" 并替换 " @ te" 替换为" @ test" ,但我在最后一次更改" @ te"字符串,我试图创建"自动完成文本视图"

但我正在使用此代码

 let aString: String = "my name is @test but i want change @te"
 let newString = aString.stringByReplacingOccurrencesOfString(varattherate, withString:"@\(getText) ", options: NSStringCompareOptions.LiteralSearch, range:nil)

输出是"我的名字是@testst,但我想要改变@ test" 但我有需要输出"我的名字是@test但我想要改变@ test"不要先改变@te只有最后一个是动态改变

第二个问题 如何知道这个函数退格

 func textView(textView: UITextView, shouldChangeTextInRange range: NSRange, replacementText text: String) -> Bool 
{


}

我尝试使用此代码,但无效 text:String) - >布尔{

    if(text == "\b") {
        println("This is backspace ")
        return false
    }
}

1 个答案:

答案 0 :(得分:0)

查看此示例以了解您的第二个问题

// this is ASCII BS (backspace)
let cBS: Int8 = 0x08
let asciitxt: [Int8] = [65,66,67,cBS,68,0]
let asString = String.fromCString(asciitxt)
print(asciitxt)
print(asString)
print(asString!)

/*
[65, 66, 67, 8, 68, 0]
Optional("ABC\u{08}D")
ABCD
*/

你的第一个问题的答案就是你的解析代码中的逻辑...它根本不是特别快的