我一直在四处寻找,我想知道是否有一种简单的方法可以将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和其他已经评论和回答的人。当我有机会这样做时,我会尝试你的解决方案。
答案 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和自动设置为小写。