• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - 更智能的自动大写

[复制链接]
菜鸟教程小白 发表于 2022-12-12 23:46:21 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我一直在环顾四周,我想知道是否有一种简单的方法可以将 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/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap