แปลงสตริง JavaScript เป็นตัวพิมพ์เล็กทั้งหมดหรือไม่


1289

ฉันจะแปลงค่าสตริง JavaScript ให้เป็นตัวอักษรพิมพ์เล็กได้อย่างไร

ตัวอย่าง: "ชื่อของคุณ" ถึง "ชื่อของคุณ"

คำตอบ:


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

27
พิจารณาสิ่งนี้ด้วยเช่นกัน "toLowerCase ไม่มีผลกับค่าของสตริง str เอง" นี่คือเอกสารอ้างอิงที่นี่developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/ …
Cary Bondoc

ความซับซ้อนของเวลาและพื้นที่ของtoLowerCase()ฟังก์ชั่นคืออะไร?
Ramzan Chasygov

7
@RamzanChasygov มันเป็นทั้ง O (n) และเร็วกว่าการนำมาใช้ใหม่ใน JavaScript เว้นแต่ว่าคุณมีเอ็นจิ้น JavaScript ที่ตั้งโปรแกรมโดยไอดีที่ฉลาดมาก
wizzwizz4

1
วิธีที่ปลอดภัยกว่าในการเรียกใช้toLowerCase()ตัวแปร(varName || '').toLowerCase()คือ
Dinesh Pandiyan

413

ใช้วิธีtoLowerCaseหรือtoLocaleLowerCaseของวัตถุString ความแตกต่างคือการที่toLocaleLowerCaseจะคำนึงถึงสถานที่ปัจจุบันของผู้ใช้ / โฮสต์ ตาม§ 15.5.4.17 ของข้อมูลจำเพาะภาษา ECMAScript (ECMA-262) , toLocaleLowerCase...

... ทำงานเหมือนกับ toLowerCase ยกเว้นว่าผลลัพธ์นั้นตั้งใจให้ผลลัพธ์ที่ถูกต้องสำหรับโลแคลปัจจุบันของสภาพแวดล้อมโฮสต์มากกว่าผลลัพธ์ที่ไม่ขึ้นกับโลแคล จะมีความแตกต่างในบางกรณีเท่านั้น (เช่นตุรกี) ที่กฎสำหรับภาษานั้นขัดแย้งกับการแมปเคส Unicode ปกติ

ตัวอย่าง:

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

นอกจากนี้โปรดทราบว่าจะมีการใช้งานtoLowerCaseและtoLocaleLowerCaseฟังก์ชันเพื่อทำงานกับประเภทค่าใด ๆโดยทั่วไป ดังนั้นคุณสามารถเรียกใช้ฟังก์ชั่นเหล่านี้ได้แม้ในที่ไม่ใช่Stringวัตถุ การทำเช่นนั้นจะบอกเป็นนัยถึงการแปลงอัตโนมัติเป็นค่าสตริงก่อนที่จะเปลี่ยนกรณีของตัวละครแต่ละตัวในค่าสตริงที่เกิดขึ้น ตัวอย่างเช่นคุณสามารถสมัคร toLowerCaseโดยตรงในวันที่เช่นนี้:

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

และซึ่งเทียบเท่ากับ:

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

รูปแบบที่สองเป็นที่ต้องการโดยทั่วไปสำหรับความเรียบง่ายและความสามารถในการอ่าน ใน IE เวอร์ชันก่อนหน้าสิ่งแรกมีประโยชน์ที่สามารถใช้กับnullค่าได้ ผลลัพธ์ของการใช้toLowerCaseหรือtoLocaleLowerCaseเปิดnullจะให้ผลnull(และไม่ใช่เงื่อนไขข้อผิดพลาด)


22
+1 คำตอบนี้สมควรได้รับคะแนนมากกว่าคำตอบที่ยอมรับซึ่งไม่ได้อธิบายอะไรเลยฉันหมายความว่ามัน
Frederik.L

ดูเหมือนว่าส่วนเกี่ยวกับการString.prototype.toLowerCase.apply(null)ส่งคืนnullจะไม่ถูกต้อง มันมีTypeErrorข้อยกเว้นเมื่อฉันลอง
JohnnyHK

2
@JohnnyHK คุณพูดถูก บิตนั้นใช้เพื่อยึดถือความเป็นจริงของ IE เวอร์ชันก่อนหน้านี้ซึ่งถูกทดสอบในเวลาที่คำตอบถูกโพสต์ไว้ ฉันได้อัปเดตคำตอบเพื่อแสดงความคิดเห็นของคุณแล้ว ขอบคุณ
Atif Aziz

29

ใช่สตริงใด ๆ ใน JavaScript มีtoLowerCase()วิธีที่จะส่งคืนสตริงใหม่ที่เป็นสตริงเก่าในตัวพิมพ์เล็กทั้งหมด สตริงเก่าจะยังคงไม่เปลี่ยนแปลง

ดังนั้นคุณสามารถทำสิ่งที่ชอบ:

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

20

toLocaleUpperCase () หรือฟังก์ชันตัวพิมพ์เล็กไม่ทำงานเหมือนที่ควรทำ

ตัวอย่างเช่นในระบบของฉัน Safari 4, Chrome 4 Beta, Firefox 3.5.x มันแปลงสตริงด้วยอักขระภาษาตุรกีไม่ถูกต้อง

เบราว์เซอร์ตอบสนองต่อ navigator.language เป็น "en-US", "tr", "en-US" ตามลำดับ

แต่ไม่มีทางที่จะรับการตั้งค่า Accept-Lang ของผู้ใช้ในเบราว์เซอร์เท่าที่ฉันจะหาได้

Chrome เท่านั้นที่ทำให้ฉันมีปัญหาถึงแม้ว่าฉันได้กำหนดค่าทุกเบราว์เซอร์เป็นที่ต้องการสถานที่ tr-TR

ฉันคิดว่าการตั้งค่าเหล่านี้มีผลกับส่วนหัว HTTP เท่านั้น แต่เราไม่สามารถเข้าถึงการตั้งค่าเหล่านี้ผ่านทาง JS

ในเอกสารประกอบของ Mozillaมันบอกว่า "ตัวละครในสตริงจะถูกแปลงเป็น ... ขณะที่เคารพสถานที่ปัจจุบัน

สำหรับภาษาส่วนใหญ่สิ่งนี้จะส่งคืนเหมือนกับ ... "

ฉันคิดว่ามันใช้ได้กับภาษาตุรกี แต่ก็ไม่ได้แตกต่างกันว่ามีการกำหนดค่าเป็น en หรือ tr

ในภาษาตุรกีมันควรแปลง "DİNÇ" เป็น "dinç" และ "DINÇ" เป็น "dınç" หรือในทางกลับกัน


Accept-Languageและnavigator.languageเป็นการตั้งค่าสองอย่างที่แยกจากกันโดยสิ้นเชิง Accept-Languageแสดงถึงการตั้งค่าที่ผู้ใช้เลือกสำหรับภาษาที่ต้องการรับในหน้าเว็บ (และการตั้งค่านี้ไม่สามารถเข้าถึง JS ได้อย่างไม่สะดวก) navigator.languageเพียงแสดงให้เห็นถึงการแปลภาษาของเว็บเบราว์เซอร์ที่ติดตั้งไว้และโดยทั่วไปไม่ควรใช้กับสิ่งใด ค่าทั้งสองนี้ไม่เกี่ยวข้องกับระบบภาษาซึ่งเป็นบิตที่ตัดสินใจว่าtoLocaleLowerCase()จะทำอะไร นั่นคือการตั้งค่าระดับ OS ออกจากขอบเขตของการตั้งค่าของเบราว์เซอร์
bobince

ฉันคิดว่า Accept-Language และ navigator.language ควรเกี่ยวข้องกัน คุณสามารถกำหนดค่าภาษาเริ่มต้นตามลำดับผ่านหน้าจอการตั้งค่าของเบราว์เซอร์ แต่คุณไม่สามารถกำหนดค่าเนวิเกเตอร์ได้ภาษาใดควรตอบสนอง ฉันคิดว่าควรมีรูปแบบอื่นของฟังก์ชัน toLowerCase () ซึ่งรับพารามิเตอร์ locale
sanilunlu

ใช่ควรมีจริงๆ น่าเสียดายที่ฟีเจอร์ที่เกี่ยวข้องกับโลแคลใน JavaScript นั้นอ่อนแอมีการระบุไม่ดีและไม่น่าเชื่อถือโดยทั่วไป
bobince

15

เพียงแค่ตัวอย่างสำหรับtoLowerCase(), toUpperCase()และต้นแบบยังไม่สามารถใช้ได้toTitleCase()หรือtoPropperCase()

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);

แก้ไขเมื่อปี 2018


1
toPropperCaseควรเป็นtoProperCase
Ian

-1 รหัสนี้มีแนวโน้มที่จะเกิดข้อผิดพลาดกับทุกอย่างที่ไม่ใช่ ASCII ตัวอย่างเช่นด้วยการป้อนข้อมูลภาษาเยอรมัน "die straße" คุณจะได้รับ "Die Strasse" เป็นตัวพิมพ์ใหญ่ ความถูกต้องจะเป็น "Die Straße" นอกจากนั้นมลภาวะต้นแบบได้ถูกทำให้ขมวดคิ้วในปัจจุบัน
ComFreek

13

ฉัน payed สนใจว่าคนจำนวนมากกำลังมองหาสำหรับstrtolower()ใน JavaScript พวกเขาคาดหวังชื่อฟังก์ชั่นเดียวกับในภาษาอื่น ๆ นั่นเป็นสาเหตุที่โพสต์นี้อยู่ที่นี่

ฉันอยากจะแนะนำให้ใช้ฟังก์ชั่น Javascript พื้นเมือง

"SomE StriNg".toLowerCase()

นี่คือฟังก์ชันที่ทำงานเหมือนกับของ PHP (สำหรับผู้ที่เปลี่ยนรหัส PHP เป็น js)

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

อะไร+ ''หา?
UpTheCreek

8

โปรดทราบว่าฟังก์ชั่นจะทำงานกับวัตถุ STRING เท่านั้น

ตัวอย่างเช่นฉันใช้ปลั๊กอินและสับสนว่าทำไมฉันถึงได้รับ "extension.tolowercase ไม่ใช่ฟังก์ชัน" ข้อผิดพลาด JS

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

ซึ่งทำให้เกิดข้อผิดพลาด "extension.toLowerCase ไม่ใช่ฟังก์ชั่น" ดังนั้นฉันจึงลองใช้รหัสนี้ซึ่งเผยให้เห็นปัญหา!

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

ผลลัพธ์คือ "(นามสกุล typeof) => object <=" - ดังนั้น AhHa ฉันไม่ได้รับ var var สำหรับอินพุตของฉัน การแก้ไขตรงไปตรงมา - เพียงบังคับให้สิ่งที่สาปเข้าไปในสตริง!:

var extension = String(extension);

หลังจากร่ายแล้วฟังก์ชัน extension.toLowerCase () ก็ใช้งานได้ดี


8

วิธีการหรือฟังก์ชั่น: toLowerCase (), toUpperCase ()

คำอธิบาย: วิธีการเหล่านี้ใช้เพื่อปกปิดสตริงหรือตัวอักษรจากตัวพิมพ์เล็กถึงใหญ่หรือในทางกลับกัน เช่น: "และ" ถึง "AND"

การแปลงเป็นตัวพิมพ์ใหญ่: - รหัสตัวอย่าง: -

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

ผลลัพธ์: วิธีการทดสอบการแปลงกรณี

การแปลงเป็นตัวพิมพ์เล็ก: - รหัสตัวอย่าง:

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

ผลลัพธ์: ทดสอบฟังก์ชั่นแปลงตัวพิมพ์เล็ก

คำอธิบาย: ในตัวอย่างด้านบน

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


2

การเลือก 1: ใช้ toLowerCase ();

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

การเลือก 2: การใช้ฟังก์ชั่นของคุณเอง

 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
    }

เรียกมันว่า:

x= convertToLowerCase(x);

ตัวเลือกแรกได้รับการกล่าวถึงแล้วในคำตอบอื่น ๆ ตัวเลือกที่สองล้มเหลวไม่ดีสำหรับทุกอย่างที่ไม่ใช่ ASCII
ComFreek


-1

ในกรณีที่คุณต้องการสร้างมันเอง:

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

คุณสามารถใช้เมธอด. toLowerCase () ในตัวบนสตริง javascript เช่น: var x = "Hello"; x.toLowerCase ();


1
นี่เป็นเหมือนคำตอบที่ยอมรับลบด้วยการจัดรูปแบบรหัสที่ดี
24619

-4

ลอง

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

การสาธิต - JSFiddle


7
ดี แต่ไม่ใช่จาวาสคริปต์โดยเฉพาะใช่ไหม
ผู้ใช้ที่ไม่ใช่ผู้ให้คำอธิบาย

จากสิ่งที่ @ some-non-descript-user กล่าวไว้ OP กำลังมองหาโซลูชัน JavaScript แม้ว่าคำตอบนี้จะถูกต้อง แต่ก็ไม่ตอบคำถามของ OP ตามพารามิเตอร์ที่กำหนด
boxspah

ดี ... ฉันกำลังมองหาวิธี CSS และมาที่หน้านี้
Abhishek Nalin
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.