Почему символ javascript String whitespace не соответствует?
Я получил в html следующую конструкцию:
<div id="text">
some text
</div>
Если я обрезаю текст и протестирую его с помощью
$("#text").text().trim() === "some text"
он возвращает false
также
$("#text").text().trim() === "some text"
возвращает false
но
/^some\s{1}text$/.test($("#text").text().trim())
возвращает значение true.
Поэтому, пожалуйста, скажите мне, что здесь не так.
Как вы могли бы предположить, я использую jQuery (1.6).
Ответы
Ответ 1
Это потому, что свободное пространство (charCode 160) не точно равно пространству (charCode 32)
jquery .text()
кодирует объекты HTML к их эквивалентности в прямом юникоде, и поэтому
становится String.fromCharCode(160)
Вы можете решить это, заменив все неразрывные пробелы обычными пространствами:
d.text().replace(String.fromCharCode(160) /* no breaking space*/,
" " /* ordinary space */) == "some text"
или еще лучше:
d.text().replace(/\s/g /* all kinds of spaces*/,
" " /* ordinary space */) == "some text"
Ответ 2
не совпадает с символом пробела (Unicode U + 0020). Это неразрывный пробельный символ, закодированный в Unicode как U + 00A0. Вот почему первый из ваших тестов не соответствует, но третий делает; \s
соответствует всем символам пробела.
Либо придерживайтесь теста регулярных выражений, либо используйте \u00a0
или \xa0
в вашей проверке равенства:
$("#text").text().trim() === "some\xa0text";
$("#text").text().trim() === "some\u00a0text";
Ответ 3
Он не учитывает невидимые "\n". Избавьтесь от "\n" и проверьте его с помощью "==".
Попробуйте это
var x = $("#text").html();
x = x.replace(/(\r\n|\n|\r)/gm, "");
x = x.replace(/\s+/g, '');
alert(x);
if (x == 'some text') {
alert('true');
}
else {
alert('false');
}
Надеюсь, что это поможет.
Ответ 4
Есть несколько подобных вопросов. Вы можете проверить их.
Соответствие jquery.text() в & nbsp;
неразрушающий пробел
Как упоминалось в предыдущих сообщениях. Вы можете сравнить с "==" вместо "===" и использовать "\ xa0" для сравнения
, который является фактическим символом для неразрывного пространства.