我一直在环顾四周,我想知道是否有一种简单的方法可以将UITextField中的所有单词大写,同时保留特定的单词(例如of、or等)。小写,除非它们是短语的第一个单词。
这是一个
我想传达的效果的例子。
我发现的方法之一是搜索特定单词的文本字段值,并将其替换为小写版本,因为用户键入一个新单词或字符,可能会监听空格。
我不确定上面的方法是否是最佳实践,或者我的搜索范围是否不够广,无法在混合中找到解决方案。
我最初是按照这些“伪代码”的思路思考的:
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和其他已经发表评论和回答的人。当我有机会的时候,我会尝试你的解决方案。
发布于 2014-07-09 16:22:56
然后,将单词转换为小写的更好的方法是将的单词大写,而不是将指定的单词大写。设置if语句以大写第一个单词的开头字母,如果后面的单词不是您指定的单词,则将其大写。然后,如果要确保指定的单词在第一个单词之后没有大写,请使用after语句。“伪码”示例:
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所说的关于空间的内容。我让你来决定如何实现这个算法。为了澄清这一点,这个算法既适用于自动大写化,也适用于小写自动设置.
https://stackoverflow.com/questions/24658451
复制相似问题