使用objective-c获取字符串中每个单词的第一个字母

时间:2010-07-15 19:31:57

标签: objective-c

我想要做的例子:

String =“这是我的句子”

我希望得到这个结果:“TIMS”

由于某种原因,我正在努力使用objective-c和字符串

3 个答案:

答案 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