首页 > 解决方案 > 有没有办法在标题案例方法中忽略首字母缩写词?

问题描述

背景

我有一个要转换为标题大小写的电视节目列表。我当前的代码在“bojack Horseman”、“Family GUY”和“jessica jones”等程序上运行良好。但是,我的一些程序中有首字母缩略词。结果,像“paradise pd”这样的标题将被转换为“Paradise Pd”。

我已经将 Regex 作为一种可能的解决方案进行了研究,并访问了一些网站,特别是 (Regex101)[ https://regex101.com/]以查看是否可以找到一些东西。也许我没有在他们的图书馆中使用正确的搜索词,但我没有运气。

这是我想做的最好的解决方案还是有更好的方法?

我的代码现状

titleSort = () => {
    // make sure all program names are in title case
    let titleCasePrograms = this.props.programs.map(program => program.name.split(' ')
        .map(w => w[0].toUpperCase() + w.substr(1).toLowerCase())
        .join(' '))
}

我希望完成什么

上面的代码是我正在编写的一个较大批次的一部分,用于按字母顺序对名称进行排序。然而,在我了解实际的排序方法之前,我想确保我考虑到了不同类型的单词,我会遇到并正确格式化它们。:-)

非常感谢您的时间和建议!

标签: javascriptarraysreactjs

解决方案


计算机无法知道首字母缩写词是什么,因此您需要有一个首字母缩写词列表。一旦你有了它,你就可以在你的转换中添加一个对该列表的检查。像这样的东西:

const acronyms = ['PD', 'MD', 'ASAP', 'NCIS']; // ...etc....
titleSort = () => {
    let titleCasePrograms = this.props.programs.map(program => {
        return program.name.split(' ')
                          .map(w => {
                              if (acronyms.includes(w.toUpperCase())) {
                                  return w.toUpperCase();
                              }
                              return w[0].toUpperCase() + w.substr(1).toLowerCase();
                          })
                          .join(' ')
    );
}

推荐阅读