Создание функции для использования React Native "case title"

Я пытаюсь получить информацию от пользователя, чтобы автоматически стать Заголовком. Код выглядит для меня солидно, но, похоже, он не дает того результата, который мне действительно нужен. Это не подключение первой буквы в верхнем регистре. Это код для ввода названия заголовка.

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 ответа

Пытатьсяstr.replace(/\b(\w)/g, k => k.toUpperCase())на любой строке str со словами, разделенными пробелами.

export const toTitleCase = (str) => {
 return str.replace(
     /\w\S*/g,
     (txt) => {
         return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();
     }
 );
}
Другие вопросы по тегам