Mat*_*ler 6 string uppercase swift swift2
我想通过将一些字符转换为大写,其他一些字符转换为小写来修改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;
Run Code Online (Sandbox Code Playgroud)
你会如何在Swift 2中做到这一点?
我没有找到任何Character方法来提高或降低案例.
将String1个字符的数组作为选项吗?(然后使用String方法来上下各一个String
Mar*_*n R 13
String有upperCaseString方法,但Character没有.原因是在像德语这样的外来语言中,将单个字符转换为大写可能会导致多个字符:
print("ß".uppercaseString) // "SS"
Run Code Online (Sandbox Code Playgroud)
该toupper/ tolower功能不是Unicode安全的,而斯威夫特不可用.
因此,您可以枚举字符串字符,将每个字符转换为字符串,将其转换为大写/小写,并连接结果:
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
}
Run Code Online (Sandbox Code Playgroud)
这可以更紧凑地写成
func lowercaseDestination(str : String) -> String {
return "".join(str.characters.map { c -> String in
let s = String(c)
return condition ? s.lowercaseString : s.uppercaseString
})
}
Run Code Online (Sandbox Code Playgroud)
重新评论:如果条件需要检查多个字符,那么您可能希望首先创建所有字符的数组:
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
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3416 次 |
| 最近记录: |