如何将characterIsMember objective c转换为swift

时间:2016-04-05 13:22:30

标签: objective-c swift

我有一个部分代码目标c代码,我想转换为swift:

NSString *rawStr = [[tokenField textField] text];
        for (int i = 0; i < [rawStr length]; i++)
        {
            if (![charSet characterIsMember:[rawStr characterAtIndex:i]])
            {
                [recipient appendFormat:@"%@",[NSString stringWithFormat:@"%c", [rawStr characterAtIndex:i]]];
            }
        }
        if ([rawStr length])
        {
            [tokenField addTokenWithTitle:rawStr representedObject:recipient];
        }

请指导我。

2 个答案:

答案 0 :(得分:3)

如果您不介意使用NSString端口是直截了当的:

    let rawStr:NSString = tokenField.textField.text
    for i in 0..<rawStr.length {
        let currentChar = rawStr.characterAtIndex(i)
        if !charSet.characterIsMember(currentChar) {
            recipient.appendFormat("%@", NSString(format:"%c", currentChar))
        }
    }
    if rawStr.length > 0 {
        tokenField.addTokenWithTitle(rawStr, representedObject:recipient)
    }

否则String类没有长度方法。您必须使用s.startIndex.advancedBy语法。

答案 1 :(得分:-1)

看起来您正在尝试保留不在角色集中的字符。

func strRemoveCharsNotInSet(str: String) -> String {
    let charSet = NSCharacterSet(charactersInString: ".@")

    let temp = str.componentsSeparatedByCharactersInSet(charSet)
    let backToString = temp.joinWithSeparator("")

    return backToString
}

print(strRemoveChars("Hello@There.Friend"))

outputs:
    HelloThereFriend