-
-
Save enginkartal/84a215589e6739de6f0cbeb9fd088e4f to your computer and use it in GitHub Desktop.
String.prototype.turkishtoEnglish = function () { | |
return this.replace('Ğ','g') | |
.replace('Ü','u') | |
.replace('Ş','s') | |
.replace('I','i') | |
.replace('İ','i') | |
.replace('Ö','o') | |
.replace('Ç','c') | |
.replace('ğ','g') | |
.replace('ü','u') | |
.replace('ş','s') | |
.replace('ı','i') | |
.replace('ö','o') | |
.replace('ç','c'); | |
}; | |
// Example | |
// let text = 'Ne güzel bir gökkuşağı'; | |
// newText = text.turkishtoEnglish(); | |
// console.log(newText) /Ne guzel bir gokkusagi | |
Eline sağlık kardeşim
Test etmedim ama sanki bu kod sadece küçük harfe çeviriyor halbuki şöyle olmalıydı;
.replace(/Ğ/gim, "G") .replace(/Ü/gim, "U") .replace(/Ş/gim, "S") .replace(/İ/gim, "I") .replace(/Ö/gim, "O") .replace(/Ç/gim, "C") .replace(/ğ/gim, "g") .replace(/ü/gim, "u") .replace(/ş/gim, "s") .replace(/ı/gim, "i") .replace(/ö/gim, "o") .replace(/ç/gim, "c");
thank you it was useful for me
Replace sadece 1 kez çalışıyor. Çözüm:
var g = ""
for (const harf of "çevrilcek ğelime") {
g += harf.split("ı").join("i").split("İ").join("I").toLowerCase().replace("ğ","g").replace("ç","c").replace("ü","u").replace("ö","o").replace("ş","s")
}
Metindeki tüm (büyük ve küçük) türkçe karakterleri değiştirmek için tıklayınız.
Bu şekilde de türkçe karakter sorununu çözebilirsiniz.
function decodeTurkishCharacters(text) {
return text
.replace(/\ğ/g, "g")
.replace(/\ü/g, "u")
.replace(/\ş/g, "s")
.replace(/\ı/g, "i")
.replace(/\ö/g, "o")
.replace(/\ç/g, "c");
}
replace()
yerine replaceAll()
kullanmanız sorunu çözecektir.
Kod:
String.prototype.turkishtoEnglish = function () {
return this.replace('Ğ','g')
.replaceAll('Ü','u')
.replaceAll('Ş','s')
.replaceAll('I','i')
.replaceAll('İ','i')
.replaceAll('Ö','o')
.replaceAll('Ç','c')
.replaceAll('ğ','g')
.replaceAll('ü','u')
.replaceAll('ş','s')
.replaceAll('ı','i')
.replaceAll('ö','o')
.replaceAll('ç','c');
};
Daha performanslı bir yola geçtim:
const engChars = {
"Ğ": "G",
"Ü": "U",
"Ş": "S",
"İ": "I",
"Ö": "O",
"Ç": "C",
"ğ": "g",
"ü": "u",
"ş": "s",
"ı": "i",
"ö": "o",
"ç": "c"
};
const toEN=str => [...str].map(c => engChars[c] || c).join("");
Multer'a Upload ettiğim Türkçe karakterli dosya isimlerini Save etmeden önce temizlemek istemiştim. Benim için aşağıdaki çözüm çalıştı.
const UTF8tarzanca = (str) => {
const sonuc = str
.replace(/\xC4\xB1/g, 'i')
.replace(/\xC3\xA7/g, 'c')
.replace(/\xC5\x9F/g, 's')
.replace(/\xC3\xB6/g, 'o')
.replace(/\xC3\xBC/g, 'u')
.replace(/\xC4\x9F/g, 'g')
.replace(/\xC4\xB0/g, 'I')
.replace(/\xC3\x87/g, 'C')
.replace(/\xC5\x9E/g, 'S')
.replace(/\xC3\x96/g, 'O')
.replace(/\xC3\x9C/g, 'U')
.replace(/\xC4\x9E/g, 'G')
return sonuc
}
Herkese merhaba, biraz daha guncel bir cozum:
With ES2015/ES6 String.prototype.normalize(),
const turkish_letters_to_convert = 'Ç,Ğ,İ,Ö,Ş,Ü,ç,ğ,ı,i,ö,ş,ü';
console.log(turkish_letters_to_convert.normalize('NFD').replace(/\p{Diacritic}/gu, ''));
// Expected output: "C,G,I,O,S,U,c,g,ı,i,o,s,u"
The example uses the combination of "Canonical Decomposition (NFD)" with Unicode property escapes.
See the source: https://stackoverflow.com/a/37511463
If you are replacing a value (and not a regular expression), only the first instance of the value will be replaced.
https://www.w3schools.com/jsref/jsref_replace.asp