更智能的汽车资本化

时间:2014-07-09 15:57:12

标签: ios objective-c keyboard uitextfield

我一直在四处寻找,我想知道是否有一种简单的方法可以将UITextField中的所有字词大写,同时留下某些字词(例如 of 等)小写,除非它们是短语的第一个单词。

这是

  

我试图传达的效果示例。

我发现的一种方法是搜索某些单词的文本字段值,并用小写版本替换它们,因为用户键入一个新单词或字符,也许会听空格键。

我不确定上述方法是否是最佳做法,或者我的搜索范围是否足够广泛,无法找到混合中的解决方案。

我原本在想这些"伪代码"行:

When value of textfield is changed
    Get current value textfield
    For each word in value:
        If the word matches ("For", "Of", "The", etc.) and the word is not the first word in the value:
        Change the word to lowercase, and replace word
    Go to next word

我的实际问题主要是表现问题。这种方法在我的申请上会过于费劲吗?如果是的话,还有更好的解决方案吗?

谢谢大家的帮助!


更新

感谢holex,cluemein和其他已经评论和回答的人。当我有机会这样做时,我会尝试你的解决方案。

1 个答案:

答案 0 :(得分:1)

将单词转换为小写的更好方法是将 NOT 的单词大写为您指定的单词。设置if语句以大写第一个单词的开头字母,并将其后面的单词大写(如果它们不是您指定的单词)。然后,如果要确保指定的单词在第一个单词后没有大写,请使用else语句。 "伪码"例如:

Capitalize letter of first word;
Move on to next word;

While not end of textfield (or while typing):
     if word is not ("the"|"and"|"of"|"or"|...):
            capitalize first letter;
     else:
            set first letter to lowercase;
     move to next word at space;

这将平均大约是返回文本的两倍,在运行时方面寻找指定的单词。这不是您要使用的代码,而是您要实现的算法。另外,考虑到holex对空间的评价。我告诉你如何实现这个算法。只是为了澄清,这个算法适用于autocapitalizng和自动设置为小写。