Chuyển đổi chuỗi JavaScript thành chữ thường?


1289

Làm cách nào tôi có thể chuyển đổi giá trị chuỗi JavaScript thành tất cả các chữ cái viết thường?

Ví dụ: "Tên của bạn" thành "tên của bạn"

Câu trả lời:


1682
var lowerCaseName = "Your Name".toLowerCase();

27
Cũng xem xét điều này, "toLowerCase không ảnh hưởng đến giá trị của chuỗi str". Điều này dựa trên một tài liệu ở đây developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/
Kẻ

thời gian và không gian phức tạp của toLowerCase()chức năng là gì?
Ramzan Chasygov

7
@RamzanChasygov Nó là cả O (n) và nhanh hơn so với việc thực hiện lại nó trong JavaScript, trừ khi bạn có một công cụ JavaScript được lập trình bởi những kẻ ngốc rất thông minh.
wizzwizz4

1
Một cách an toàn hơn để gọi toLowerCase()các biến sẽ là (varName || '').toLowerCase();
Dinesh Pandiyan

413

Sử dụng các phương thức toLowerCase hoặc toLocaleLowerCase của đối tượng String . Sự khác biệt là toLocaleLowerCasesẽ đưa tài khoản hiện tại của người dùng / máy chủ vào tài khoản. Theo § 15.5.4.17 của ECMAScript Ngôn ngữ Đặc điểm kỹ thuật (ECMA-262) , toLocaleLowerCase...

Cách hoạt động giống hệt như toLowerCase ngoại trừ kết quả của nó nhằm mang lại kết quả chính xác cho miền địa phương hiện tại của môi trường máy chủ, chứ không phải là kết quả độc lập với miền địa phương. Sẽ chỉ có một sự khác biệt trong một vài trường hợp (chẳng hạn như tiếng Thổ Nhĩ Kỳ) trong đó các quy tắc cho ngôn ngữ đó xung đột với ánh xạ trường hợp Unicode thông thường.

Thí dụ:

var lower = 'Your Name'.toLowerCase();

Cũng lưu ý rằng các hàm toLowerCasetoLocaleLowerCasehàm được triển khai để hoạt động chung trên mọi loại giá trị. Do đó, bạn có thể gọi các hàm này ngay cả trên các Stringđối tượng không . Làm như vậy sẽ ngụ ý chuyển đổi tự động thành giá trị chuỗi trước khi thay đổi trường hợp của từng ký tự trong giá trị chuỗi kết quả. Ví dụ: bạn có thể đăng ký toLowerCase trực tiếp vào một ngày như thế này:

var lower = String.prototype.toLowerCase.apply(new Date());

và có hiệu quả tương đương với:

var lower = new Date().toString().toLowerCase();

Hình thức thứ hai thường được ưa thích vì tính đơn giản và dễ đọc của nó. Trên các phiên bản IE trước, phiên bản đầu tiên có lợi ích là nó có thể hoạt động với một nullgiá trị. Kết quả của việc áp dụng toLowerCasehoặc toLocaleLowerCasebật nullsẽ mang lại null(và không phải là một điều kiện lỗi).


22
+1, câu trả lời này xứng đáng nhận được nhiều phiếu hơn so với câu trả lời được chấp nhận mà không giải thích gì cả, ý tôi là
Frederik.L

Phần về việc String.prototype.toLowerCase.apply(null)trở lại nulldường như không chính xác. Nó ném một TypeErrorngoại lệ khi tôi thử nó.
JohnnyHK

2
@JohnnyHK Bạn nói đúng. Bit đó được sử dụng để giữ đúng trên các phiên bản IE trước đó, nơi nó đã được thử nghiệm tại thời điểm câu trả lời ban đầu được đăng. Tôi đã cập nhật câu trả lời để phản ánh phản hồi của bạn. Cảm ơn.
Atif Aziz

29

Có, bất kỳ chuỗi nào trong JavaScript đều có một toLowerCase()phương thức sẽ trả về một chuỗi mới là chuỗi cũ trong tất cả các chữ thường. Chuỗi cũ sẽ không thay đổi.

Vì vậy, bạn có thể làm một cái gì đó như:

"Foo".toLowerCase();
document.getElementById('myField').value.toLowerCase();

20

Các hàm toLocaleUpperCase () hoặc chữ thường không hoạt động như họ nên làm.

Ví dụ: trong hệ thống của tôi, Safari 4, Chrome 4 Beta, Firefox 3.5.x, nó chuyển đổi các chuỗi với các ký tự tiếng Thổ Nhĩ Kỳ không chính xác.

Các trình duyệt phản ứng với navigator.l Language lần lượt là "en-US", "tr", "en-US".

Nhưng không có cách nào để cài đặt Chấp nhận Lang của người dùng trong trình duyệt theo như tôi có thể tìm thấy.

Chỉ Chrome mang đến cho tôi sự cố mặc dù tôi đã định cấu hình mọi trình duyệt là ngôn ngữ tr-TR ưa thích.

Tôi nghĩ rằng các cài đặt này chỉ ảnh hưởng đến tiêu đề HTTP, nhưng chúng tôi không thể truy cập vào các cài đặt này thông qua JS.

Trong tài liệu Mozilla có ghi "Các ký tự trong chuỗi được chuyển đổi thành ... trong khi tôn trọng miền địa phương hiện tại.

Đối với hầu hết các ngôn ngữ, điều này sẽ trả về giống như ... ".

Tôi nghĩ nó hợp lệ với tiếng Thổ Nhĩ Kỳ, nó không khác biệt nó được cấu hình là en hoặc tr.

Trong tiếng Thổ Nhĩ Kỳ, nó nên chuyển đổi "DtubNÇ" thành "dinç" và "DINÇ" thành "dınç" hoặc ngược lại.


Accept-Languagenavigator.languagelà hai cài đặt hoàn toàn riêng biệt. Accept-Languagephản ánh các tùy chọn đã chọn của người dùng cho những ngôn ngữ họ muốn nhận trong các trang web (và cài đặt này không thể truy cập được vào JS). navigator.languagechỉ phản ánh bản địa hóa nào của trình duyệt web đã được cài đặt và thường không nên được sử dụng cho bất cứ điều gì. Cả hai giá trị này đều không liên quan đến ngôn ngữ hệ thống, là bit quyết định những gì toLocaleLowerCase()sẽ làm; đó là cài đặt cấp độ hệ điều hành ngoài phạm vi của các trình duyệt trước của trình duyệt.
bobince

Tôi nghĩ rằng Ngôn ngữ chấp nhận và điều hướng. Ngôn ngữ nên liên quan đến nhau. Bạn có thể định cấu hình ngôn ngữ mặc định theo thứ tự thông qua màn hình cài đặt của trình duyệt, nhưng vì vậy bạn không thể định cấu hình điều hướng nào. Tôi nghĩ rằng nên có một dạng khác của hàm toLowerCase () có tham số miền địa phương.
sanilunlu

Vâng, thực sự nên có. Thật không may, các tính năng liên quan đến ngôn ngữ trong JavaScript rất yếu, được chỉ định kém và thường không đáng tin cậy.
bobince

15

Chỉ là một ví dụ cho toLowerCase(), toUpperCase()và nguyên mẫu cho chưa có sẵn toTitleCase()hoặctoPropperCase()

String.prototype.toTitleCase = function() {
  return this.split(' ').map(i => i[0].toUpperCase() + i.substring(1).toLowerCase()).join(' ');
}

String.prototype.toPropperCase = function() {
  return this.toTitleCase();
}

var OriginalCase = 'Your Name';
var lowercase = OriginalCase.toLowerCase();
var upperCase = lowercase.toUpperCase();
var titleCase = upperCase.toTitleCase();

console.log('Original: ' + OriginalCase);
console.log('toLowerCase(): ' + lowercase);
console.log('toUpperCase(): ' + upperCase);
console.log('toTitleCase(): ' + titleCase);

chỉnh sửa 2018


1
toPropperCasenên làtoProperCase
Ian

-1 mã này rất dễ bị lỗi với mọi thứ không phải ASCII. Ví dụ: với đầu vào "die straße" của Đức, bạn sẽ nhận được "Die Strasse" như trường hợp tiêu đề. Đúng sẽ là "Die Straße". Ngoài ra, ô nhiễm nguyên mẫu ngày nay được tán thành.
ComFalet

13

Tôi payed sự chú ý mà rất nhiều người đang tìm kiếm cho strtolower()bằng JavaScript. Họ đang mong đợi tên hàm giống như trong các ngôn ngữ khác, đó là lý do tại sao bài đăng này ở đây.

Tôi khuyên bạn nên sử dụng chức năng Javascript gốc

"SomE StriNg".toLowerCase()

Đây là hàm hoạt động giống hệt như của PHP (đối với những người đang chuyển mã PHP sang js)

function strToLower (str) {
    return String(str).toLowerCase();
}

Để làm gì + ''?
UpTheCux

8

Lưu ý rằng hàm CHỈ sẽ hoạt động trên các đối tượng CHUINGI.

Chẳng hạn, tôi đang sử dụng một plugin và đã bối rối tại sao tôi lại gặp lỗi "extension.tolowercase không phải là một hàm".

 onChange: function(file, extension)
    {
      alert("extension.toLowerCase()=>" + extension.toLowerCase() + "<=");

Điều này tạo ra lỗi "extension.toLowerCase không phải là một hàm" Vì vậy, tôi đã thử đoạn mã này, điều này đã tiết lộ vấn đề!

alert("(typeof extension)=>" + (typeof extension) + "<=");;

Đầu ra là "(typeof extension) => object <=" - vì vậy AhHa, tôi KHÔNG nhận được một chuỗi var cho đầu vào của mình. Việc khắc phục là thẳng về phía trước - chỉ cần buộc thứ cực đoan thành Chuỗi!:

var extension = String(extension);

Sau khi truyền, hàm extension.toLowerCase () hoạt động tốt.


8

Phương thức hoặc Hàm: toLowerCase (), toUpperCase ()

Mô tả: Các phương thức này được sử dụng để bao gồm một chuỗi hoặc bảng chữ cái từ chữ thường đến chữ hoa hoặc ngược lại. ví dụ: "và" đến "VÀ".

Chuyển đổi sang chữ hoa: - Mã ví dụ: -

<script language=javascript>
var ss = " testing case conversion method ";
var result = ss.toUpperCase();
document.write(result);
</script>

Kết quả: PHƯƠNG PHÁP CHUYỂN ĐỔI KIỂM TRA

Chuyển đổi sang chữ thường: - Mã ví dụ:

<script language=javascript>
var ss = " TESTING LOWERCASE CONVERT FUNCTION ";
var result = ss.toLowerCase();
document.write(result);
</script>

Kết quả: kiểm tra chức năng chuyển đổi chữ thường

Giải thích: Trong các ví dụ trên,

toUpperCase() method converts any string to "UPPER" case letters.
toLowerCase() method converts any string to "lower" case letters.

3

Chỉ cần sử dụng JS toLowerCase()
let v = "Your Name" let u = v.toLowerCase();hoặc
let u = "Your Name".toLowerCase();


2

Lựa chọn 1: sử dụng toLowerCase ();

var x = "ABC";
x=x.toLowerCase();

Lựa chọn 2: Sử dụng chức năng của riêng bạn

 function convertToLowerCase(str) {
      var result = ''

      for (var i = 0; i < str.length; i++) {
        var code = str.charCodeAt(i)
        if (code > 64 && code < 91) {
          result += String.fromCharCode(code + 32)
        } else {
          result += str.charAt(i)
        }
      }
      return result
    }

Gọi nó là:

x= convertToLowerCase(x);

Tùy chọn đầu tiên đã được đề cập trong các câu trả lời khác, tùy chọn thứ hai thất bại nặng nề cho mọi thứ không phải ASCII.
ComFalet


-1

Trong trường hợp bạn muốn tự xây dựng nó:

function toLowerCase(string) {

let lowerCaseString = "";

for (let i = 0; i < string.length; i++) {
    //find ASCII charcode
    let charcode = string.charCodeAt(i);

    //if uppercase
    if (charcode > 64 && charcode < 97){
        //convert to lowercase
        charcode = charcode + 32
    }

    //back to char
    let lowercase = String.fromCharCode(charcode);

    //append
    lowerCaseString = lowerCaseString.concat(lowercase);
}

return lowerCaseString

}


-2

bạn có thể sử dụng phương thức dựng sẵn .toLowerCase () trên chuỗi javascript. ví dụ: var x = "Xin chào"; x.toLowerCase ();


1
Điều này giống hệt với câu trả lời được chấp nhận trừ đi định dạng mã tốt
reggaeg Ức

-4

Thử

<input type="text" style="text-transform: uppercase">  //uppercase
<input type="text" style="text-transform: lowercase">  //lowercase

Bản trình diễn - JSFiddle


7
Đẹp, nhưng không đặc biệt là javascript, không?
một số người dùng không mô tả

Dựa trên những gì mà một số người dùng không mô tả đã nói, OP đang tìm kiếm một giải pháp JavaScript. Mặc dù câu trả lời này là hợp lệ, nó không trả lời câu hỏi của OP theo các tham số đã xác định.
boxspah

Thật tuyệt ... Tôi đang tìm kiếm một phương pháp CSS và đã đến trang này
Abhishek Nalin
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.