创建一个使用React Native的``标题大小写''的函数

时间:2018-08-03 18:27:21

标签: javascript reactjs typescript react-native title-case

我正在尝试从用户那里得到一些输入,以自动成为Title Cased。该代码对我来说看起来很可靠,但似乎没有提供我真正想要的输出。它没有将第一个字母大写。这是使输入标题大小写的代码。

export function titleCase(str: string): string {
    return !str
        ? ""
        : str.toLowerCase()
            .split(" ")
            .map(function(word: string): string {
                return word && word.length > 0 ? word.replace(word[0], word[0].toUpperCase()) : ""
            })
            .join(" ")
}

然后在这样的视图标记中调用它...

<Text style={styles.providerNameTxt}>
    {Scenes.Detail.titleCase(providerName)}
</Text>
<Text style={styles.providerSpecialtyTxt}>
    {Scenes.Detail.titleCase(providerSpecialty)}
</Text>

这行不行吗?当用户转到输入(providerName)时,输入不会自动将首字母大写。我不知道为什么。该文件称为detail.ts,位于util / scenes文件夹下。因此,使用“ Scenes.detail”应调用该函数。除非我的功能不对。 另外,在scenes / detail.ts中,有一个titleCase导出默认值。它不存在,所以我添加了它,但是它仍然无法按我的意愿工作。

2 个答案:

答案 0 :(得分:0)

尝试 str.replace(/\b(\w)/g, k => k.toUpperCase()) 在任何字符串str上,单词之间用空格隔开。

答案 1 :(得分:0)

export const toTitleCase = (str) => {
 return str.replace(
     /\w\S*/g,
     (txt) => {
         return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();
     }
 );
}