OGeek|极客世界-中国程序员成长平台

标题: ios - 更智能的自动大写 [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-12 23:46
标题: ios - 更智能的自动大写

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

这是一个

Example of the Effect I'm Trying to Convey.

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

我不确定上述方法是否是最佳实践,或者我的搜索是否不够广泛,无法找到已经存在的解决方案。

我最初是在考虑这些“伪代码”行:

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、cuemein 和其他已经评论和回答的人。有机会我会尝试你的解决方案。



Best Answer-推荐答案


将单词转换为小写的更好方法是将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 关于空间的说法。我把如何实现这个算法留给你。澄清一下,这个算法既适用于自动大写,也适用于自动设置为小写。

关于ios - 更智能的自动大写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24658451/






欢迎光临 OGeek|极客世界-中国程序员成长平台 (http://sqlite.in/) Powered by Discuz! X3.4