string.replace(“é”,“e”)不起作用

我有应该“清理”一个字符串的函数,我想使用replace()来做到这一点,但我不明白为什么下面的代码不工作时,文本来自输入[文本] 。

例如 :

console.log(getCleanText("ééé")); // works fine, it displays : eee

// my_id is an input with type="text"
var my_text = document.getElementById("my_id").value 
console.log(getCleanText(my_text)); // doesn't work at all, it displays : ééé

该功能码是:

function getCleanText(some_text) {
    var clean_text = some_text.toLowerCase();
    clean_text = clean_text.replace("é", "e"); 
    clean_text = clean_text.split("é").join("e"); // give it another try

    return clean_text;
}

任何想法 ?


我认为元素值中的字符“é”与“é”常量不同。 为了解决这个问题,你可以看看输入的int值。

var inputEValue = document.getElementById("my_id").charCodeAt(0);
var constantEValue = "é".charCodeAt(0);

然后你将能够检测到你正在替换的字符。
如果您只想从文本中删除重音符号,请查看问题在JavaScript中删除字符串中的重音符号/变音符号


我敢打赌,你的问题在于对Unicode的误解。

é 
é

以上两个字符是两个不同的字符。 第一个是字母e,带有重音字符(U + 0301)。 另一个是单个字符U + 00E9。

你需要确保你正在替换这两个版本。


尝试这个:

function getCleanText(old_string)
{
    var new_string = old_string.toLowerCase();
    return new_string.replace(/é/g, 'e');
}

埃德:被罗伯特殴打。 有关参考,请参阅此处:什么是扩展内置对象的有用的JavaScript方法?

链接地址: http://www.djcxy.com/p/94029.html

上一篇: string.replace("é", "e") not working

下一篇: Convert UNIX Time to mm/dd/yy hh:mm (24 hour) in JavaScript