2012-03-04 2 views
0
var type = event.type.replace('page', 'Page').replace('init', 'Init').replace('before', 'Before').replace('show', 'Show').replace('hide', 'Hide'); 

Может ли кто-нибудь подумать о более удобном способе сделать это?Более удобный способ сделать несколько замен?

+0

всегда может поставить их в массив с foreach, будет легче поддерживать, но я не уверен, что это то, что вы ищете .. – Ben

+1

Это не имеет никакого отношения к jQuery. –

+0

Что случилось с этим? Я бы поместил каждый вызов 'replace' в отдельную строку, но он выглядит нормально. – zch

ответ

7

Вы можете использовать RegExp с .replace(), передавая функцию в качестве второго аргумента (= чистый JavaScript):

var type = event.type.replace(/page|init|before|show|hide/, function(s) { 
    return s.charAt(0).toUpperCase() + s.slice(1); 
}); 
2

Что вы имеете в порядке. Существует еще один способ сделать это:

var type = event.type.replace(/page|init|before|show|hide/g, function(m) { 
    return m.substring(0,1).toUpperCase() + m.substring(1); 
}); 

Live example

Или в общем случае (не ограничиваясь набором строк показан):

var type = event.type.replace(/(\S)(\S+)/g, function(m, c1, c2) { 
    return c1.toUpperCase() + (c2 ? c2 : ""); 
}); 

Live example

Смежные вопросы