#javascript #html #arabic #farsi
#javascript #HTML #Арабский #farsi
Вопрос:
По некоторым причинам я добавляю joiner нулевой ширины к ключевому слову. Я хочу исключить его добавление, когда ключевое слово находится в начале новой строки, но я не могу удалить его снова.
Я предполагаю две причины этой проблемы, но я понятия не имею, как решить проблему в обоих случаях:
1- неправильное использование n
и r
для определения начала строки?
2- Когда я проверяю сгенерированный html после добавления joiner, я вижу, что добавленный символ amp;zwj;
заключен в двойные кавычки, подобные "amp;zwj;"
. Нужно ли мне учитывать эти цитаты при попытке их удаления?
var tail="u200D";
var keyword="است";
var htm=$("#test").html();
//Adding joiner to keywords
htm=htm.split(keyword).join(tail '<span class="red">' tail keyword tail '</span>' tail);
//Removing all possible combination of joiner with new lines
htm=htm.split('rn' tail).join('rn');
htm=htm.split('n' tail).join('n');
htm=htm.split('r' tail).join('r');
htm=htm.split('rn' '<span class="red">' tail).join('rn' '<span class="red">');
htm=htm.split('n' '<span class="red">' tail).join('n' '<span class="red">');
htm=htm.split('r' '<span class="red">' tail).join('r' '<span class="red">');
$("#test").html(htm);
div{font-size:36pt;}
.red{color:red}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="test">استکان</div>
Комментарии:
1. Символы, обычно используемые в Windows для начала новой строки, — это возврат каретки (
r
), за которым следует перевод строки (n
) — Так что следует искать последовательности CRLF, а не LFCR, как у вас. TLDR:rn
является правильным,nr
с другой стороны, это LFCR. 😉2. Спасибо, но замена all
n
наrn
не внесла никаких изменений. Вы имеете в виду что-то другое? @enhzflep3. Я не уверен. Я думаю, что имею в виду что-то другое. В любом случае, с тех пор я протестировал свое предложение и обнаружил, что оно совершенно бесполезно. Я не могу не задаться вопросом, почему вы ищете символ LF, затем что-то еще, наконец, ищете CR. Символы должны быть смежными (единый блок без пробелов), и поэтому я ожидаю, что мне придется находить их вместе. Поскольку я почти никогда не работал ни на каком другом языке, кроме английского (и никогда не на языках RTL), я подозреваю, что у меня недостаточно квалификации, чтобы оказать какую-либо помощь. Извините!
4. Ваша переменная
htm
буквально содержит строку"استکان"
, здесь нет символа в конце строки. И даже если бы он был, символы в конце строки игнорируются при анализе в DOM. jsfiddle.net/xvmo5dLg Чего вы действительно хотите достичь? Вы хотите найти узлы, которые находятся в начале контейнера, или вы хотите найти узлы, которые отображаются после разрыва строки? Это два совершенно разных запроса.5. Точно я хочу найти узлы, которые отображаются после разрыва строки, и удалить » u200D», если он находится в начале этих строк. @Kaiido
Ответ №1:
используйте .text()
вместо .html()
для поиска:
if($("#test").text().startsWith(tail))
$("#test").html($("#test").html().replace(tail, ''));
Комментарии:
1. Спасибо, но это удалит все появления
tail
. Я должен сосредоточиться на тех, которые размещены в начале строк.