我想要做的例子:
String =“这是我的句子”
我希望得到这个结果:“TIMS”
由于某种原因,我正在努力使用objective-c和字符串
答案 0 :(得分:32)
天真的解决方案:
NSMutableString * firstCharacters = [NSMutableString string];
NSArray * words = [@"this is my sentence" componentsSeparatedByCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
for (NSString * word in words) {
if ([word length] > 0) {
NSString * firstLetter = [word substringToIndex:1];
[firstCharacters appendString:[firstLetter uppercaseString]];
}
}
请注意,这对于分解单词有点愚蠢(只是通过空格,这并不总是最好的方法),并且它不处理UTF16 +字符。
如果您需要处理UTF16 +字符,请将循环内的if()
语句更改为:
if ([word length] > 0) {
NSString * firstLetter = [word substringWithRange:[word rangeOfComposedCharacterSequenceAtIndex:0]];
[firstCharacters appendString:[firstLetter uppercaseString]];
}
答案 1 :(得分:1)
你总是可以使用方法cStringUsingEncoding:并且只是迭代const char *。或者更好的是,您可以使用方法getCharacters:
当你迭代时,你只需要做一个for循环并检查前一个字符是否是''字符并将它附加到你的临时变量。如果你想要它大写,只需在最后使用uppercaseString。
有关更多信息,请参阅apple doc: http://developer.apple.com/mac/library/documentation/Cocoa/Reference/Foundation/Classes/NSString_Class/Reference/NSString.html#//apple_ref/occ/instm/NSString/getCharacters:range:
我有时也会遇到字符串,函数名称与其他语言(例如c ++ / java)并不相似。
答案 2 :(得分:0)
使用以下代码枚举字符串的最快捷方式
快速
let fullWord = "This is my sentence"
var result = ""
fullWord.enumerateSubstrings(in: fullWord.startIndex..<fullWord.endIndex, options: .byWords) { (substring, _, _, _) in
if let substring = substring {
result += substring.prefix(1).capitalized }
}
print(result)
输出
TIMS