首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更聪明的自动大写

更聪明的自动大写
EN

Stack Overflow用户
提问于 2014-07-09 15:57:12
回答 1查看 58关注 0票数 2

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

这是一个

我想传达的效果的例子。

我发现的方法之一是搜索特定单词的文本字段值,并将其替换为小写版本,因为用户键入一个新单词或字符,可能会监听空格。

我不确定上面的方法是否是最佳实践,或者我的搜索范围是否不够广,无法在混合中找到解决方案。

我最初是按照这些“伪代码”的思路思考的:

代码语言:javascript
复制
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和其他已经发表评论和回答的人。当我有机会的时候,我会尝试你的解决方案。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-09 16:22:56

然后,将单词转换为小写的更好的方法是将的单词大写,而不是将指定的单词大写。设置if语句以大写第一个单词的开头字母,如果后面的单词不是您指定的单词,则将其大写。然后,如果要确保指定的单词在第一个单词之后没有大写,请使用after语句。“伪码”示例:

代码语言:javascript
复制
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所说的关于空间的内容。我让你来决定如何实现这个算法。为了澄清这一点,这个算法既适用于自动大写化,也适用于小写自动设置.

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24658451

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档