在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没有.原因是在德语等外来语言中,转换单一语言
大写字符可以导致多个字符:
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}总结
以上是内存溢出为你收集整理的string – Swift 2:迭代和大写/小写一些字符全部内容,希望文章能够帮你解决string – Swift 2:迭代和大写/小写一些字符所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)