我有一个部分代码目标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];
}
请指导我。
答案 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