我想通过将一些字符转换为大写,其他一些字符转换为小写来修改
Swift字符串.
在Obj-c我有以下内容:
- (NSString*) lowercaseDestination:(NSString*) string { NSUInteger length = string.length; unichar buf[length+1]; [string getCharacters:buf]; BOOL up = true; for (int i=0; i< length ; i++) { unichar chr = buf[i]; if( .... ) { buf[i] = toupper(chr); } else { buf[i] = tolower(chr); } } string = [NSString stringWithCharacters:buf length:length]; return string;
你会如何在Swift 2中做到这一点?
我没有找到任何Character方法来判断大小写.
将1个字符的字符串数组作为选项吗? (然后使用String方法来上下每个String
String有一个upperCaseString方法,但是Character没有.
原因是在德语等外来语言中,转换单一语言
大写字符可以导致多个字符:
原文链接:https://www.f2er.com/swift/319017.html原因是在德语等外来语言中,转换单一语言
大写字符可以导致多个字符:
print("ß".uppercaseString) // "SS"
toupper / tolower函数不是Unicode安全的,不是
在Swift中可用.
所以你可以枚举字符串字符,将每个字符转换为
一个字符串,将其转换为大写/小写,并连接结果:
func lowercaseDestination(str : String) -> String { var result = "" for c in str.characters { let s = String(c) if condition { result += s.lowercaseString } else { result += s.uppercaseString } } return result }
这可以更紧凑地写成
func lowercaseDestination(str : String) -> String { return "".join(str.characters.map { c -> String in let s = String(c) return condition ? s.lowercaseString : s.uppercaseString }) }
重新评论:如果条件需要检查多个
然后你可能想要创建一个包含所有字符的数组
第一:
func lowercaseDestination(str : String) -> String { var result = "" let characters = Array(str.characters) for i in 0 ..< characters.count { let s = String(characters[i]) if condition { result += s.lowercaseString } else { result += s.uppercaseString } } return result }