【问题标题】:Objective-C: Splitting a word into an array of charactersObjective-C:将单词拆分为字符数组
【发布时间】:2014-04-10 00:21:03
【问题描述】:

很抱歉这个相当简单的问题,但我对 Objective-c 还是很陌生,似乎无法找到真正适用于我正在尝试做的问题的解决方案。 本质上,我有一个包含随机单词的 NSString。 例如:

NSString *word = @"Characters";

然后我想把它分成一个由字符组成的数组,以便我可以索引每个字符:

[0] C
[1] H
[2] A

如果将它们拆分后放入 NSString 或 Array 中,这并不重要,只要我可以将字符串分成每个单独的字符然后索引它们。

另外为了澄清,这个词不是硬编码的,它是每次我的程序运行时随机生成的,并从单词列表中提取出来。

感谢任何帮助!

【问题讨论】:

  • 很多很多 caveats 来处理字符串。你想完成什么?
  • getCharacters:range:
  • 在这里查看这个答案。基本上你只需要遍历它:stackoverflow.com/a/13359464/834310
  • @JustAnotherCoder 这不是必须的。如果您只需要根据索引访问字符,我的回答就足够了。如果你需要一个数组,HotLicks 的评论会处理。

标签: objective-c arrays string nsstring nsarray


【解决方案1】:

没有理由这样做。在内部,字符串已经是一个字符数组,您可以通过索引访问各个字符...

[word characterAtIndex:2] // returns 'a'

【讨论】:

  • 对。唯一的问题是 'a'unichar (unsigned short),您可能希望将其包装回 NSString
  • [NSString stringWithFormat:@"%c",[word characterAtIndex:i]]; 如果你真的需要的话。
  • 不是唯一的问题。 Unichar 可以是任何有效的 UTF16 代码点。这包括空格、控制字符、未分配字符、组合字符等。您需要检查字符集成员资格并根据您打算对字符串执行的操作考虑规范化形式。
  • 问题是关于如何在特定索引处获取字符,这个答案足以回答。问题不在于如何在索引处获取字符,然后确保它是特定类型的字符。反对票真的是不可接受的,鉴于实际问题需要更好的解释......
【解决方案2】:

更新 Swift 4+

默认你有一个字符串

let string = "Characters"

所以,你需要做的就是……

for i:Int in 0..< string.count {
     let char = NSString(format: "%c", (string as NSString).character(at: i))
     print(char) //Optionally you can convert using 'char as String'
}

注意:- 这是answer的更新

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-23
    • 1970-01-01
    • 2013-02-23
    • 1970-01-01
    • 2018-05-16
    • 2011-06-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多