2017-05-04 3 views
0

J'utilise cette fonction commune pour convertir la plupart de mes éléments de liste en casse de titre sans problème. J'ai découvert un endroit qui a besoin d'amélioration, quand il y a un tiret ou une barre oblique au milieu, je veux que la lettre suivante soit mise en majuscule. Par exemple, hispanique/latino devrait être hispanique/latino. Fondamentalement capitaliser quand la première lettre ou a procédé par un symbole OU un espace.Convertir la chaîne en casse de titre après un tiret ou une barre oblique

Code actuel:

function toTitleCase(str) { 
    return str.toLowerCase().replace(/(?:^|\s)\w/g, function (match) { 
     return match.toUpperCase(); 
    }); 
} 

Répondre

2

il suffit de changer votre capture d'espaces \s, être une classe de caractères étant des espaces , un trait d'union ou une barre oblique [\s-/] (et toute autre chose que vous voulez)

function toTitleCase(str) { 
 
    return str.toLowerCase().replace(/(?:^|[\s-/])\w/g, function (match) { 
 
     return match.toUpperCase(); 
 
    }); 
 
} 
 

 
console.log(toTitleCase("test here")); 
 
console.log(toTitleCase("test/here")); 
 
console.log(toTitleCase("test-here"));

1

simplement ajouter ou conditions regex /(?:^|\s|\/|\-)\w/g

function toTitleCase(str) { 
 
    return str.toLowerCase().replace(/(?:^|\s|\/|\-)\w/g, function (match) { 
 
     return match.toUpperCase(); 
 
    }); 
 
} 
 

 

 
console.log(toTitleCase('His/her new text-book'))