BIÊN TẬP : Hiện đang hoạt động trong IE8 mà không thay đổi.
EDIT : Tôi đã ở thiểu số về việc camelCase thực sự là gì (Chữ thường viết hoa so với chữ hoa.). Cộng đồng nói chung tin rằng một chữ thường hàng đầu là trường hợp lạc đà và một thủ đô hàng đầu là trường hợp pascal. Tôi đã tạo hai hàm chỉ sử dụng các mẫu regex. :) Vì vậy, chúng tôi sử dụng một từ vựng thống nhất tôi đã thay đổi lập trường của mình để phù hợp với đa số.
Tất cả tôi tin rằng bạn cần là một regex duy nhất trong cả hai trường hợp:
var camel = " THIS is camel case "
camel = $.trim(camel)
.replace(/[^A-Za-z]/g,' ') /* clean up non-letter characters */
.replace(/(.)/g, function(a, l) { return l.toLowerCase(); })
.replace(/(\s.)/g, function(a, l) { return l.toUpperCase(); })
.replace(/[^A-Za-z\u00C0-\u00ff]/g,'');
// Returns "thisIsCamelCase"
hoặc là
var pascal = " this IS pascal case "
pascal = $.trim(pascal)
.replace(/[^A-Za-z]/g,' ') /* clean up non-letter characters */
.replace(/(.)/g, function(a, l) { return l.toLowerCase(); })
.replace(/(^.|\s.)/g, function(a, l) { return l.toUpperCase(); })
.replace(/[^A-Za-z\u00C0-\u00ff]/g,'');
// Returns "ThisIsPascalCase"
Trong các hàm: Bạn sẽ nhận thấy rằng trong các hàm này, sự thay thế đang hoán đổi bất kỳ non az nào bằng một khoảng trắng so với một chuỗi rỗng. Điều này là để tạo ranh giới từ cho viết hoa. "xin chào-thế giới # của tôi" -> "HelloMyWorld"
// remove \u00C0-\u00ff] if you do not want the extended letters like é
function toCamelCase(str) {
var retVal = '';
retVal = $.trim(str)
.replace(/[^A-Za-z]/g, ' ') /* clean up non-letter characters */
.replace(/(.)/g, function (a, l) { return l.toLowerCase(); })
.replace(/(\s.)/g, function (a, l) { return l.toUpperCase(); })
.replace(/[^A-Za-z\u00C0-\u00ff]/g, '');
return retVal
}
function toPascalCase(str) {
var retVal = '';
retVal = $.trim(str)
.replace(/[^A-Za-z]/g, ' ') /* clean up non-letter characters */
.replace(/(.)/g, function (a, l) { return l.toLowerCase(); })
.replace(/(^.|\s.)/g, function (a, l) { return l.toUpperCase(); })
.replace(/[^A-Za-z\u00C0-\u00ff]/g, '');
return retVal
}
Ghi chú:
- Tôi đã rời A-Za-z so với việc thêm cờ không nhạy cảm trường hợp (i) vào mẫu (/ [^ AZ] / ig) để dễ đọc.
- Điều này hoạt động trong IE8 (srsly, người sử dụng IE8 nữa.) Sử dụng các công cụ dev (F12) mà tôi đã thử nghiệm trong IE11, IE10, IE9, IE8, IE7 và IE5. Hoạt động trong tất cả các chế độ tài liệu.
- Điều này sẽ chính xác trường hợp chữ cái đầu tiên của chuỗi bắt đầu có hoặc không có khoảng trắng.
Thưởng thức