У меня есть строка, которая была изменена несколькими string.replace('x','y')
, а те, которые заменяют команды, активируются с помощью флажков, и я пока не смог автоматически изменить процесс, когда один из флажков снят. Единственное решение, которое я нашел, - сделать string.replace('y','x')
, когда флажок снят ... Есть ли другой способ, который был бы чище?Отмените string.replace
ответ
Во-первых, делать string.replace ('х', 'у'), а затем string.replace ('у', 'х'), чтобы отменить это не будет работать. Вот почему:
начиная строка: "zxyxz" string.replace ('х', 'у') дает вам "zyyyz" string.replace ('у', 'х'), то даст вам «zxxxz », что явно не то, с чего вы начали.
Вот скрипку с тем, что вы хотите, я думаю:
http://fiddle.jshell.net/XZE9v/1/
Он будет повторно применять правила каждый раз, когда флажок щелкнули/unclicked.
В случае, если вы не можете увидеть его здесь код:
HTML:
<form id="myForm">
<input type="text" id="originalText" />
<br/>
a|x<input type="checkbox" data-find="a" data-replace="x" onclick="updateRegex()" />
<br/>
b|y<input type="checkbox" data-find="b" data-replace="y" onclick="updateRegex()" />
<br/>
c|z<input type="checkbox" data-find="c" data-replace="z" onclick="updateRegex()" />
</form>
<br/>
<div id="display"></div>
JS:
function updateRegex() {
var original = document.getElementById("originalText").value;
var newString = original;
var elems = document.getElementById("myForm").childNodes;
for(var i=0; i<elems.length; i++)
{
if ("checkbox" == elems[i].type && elems[i].checked)
{
var regexp = new RegExp(elems[i].getAttribute("data-find"), 'g');
newString = newString.replace(regexp, elems[i].getAttribute("data-replace"));
}
}
document.getElementById("display").innerHTML = newString;
}
Вордс, отправил неправильную скрипку; Я отредактировал и установил правильный. – Lebowski156
Ну, это в значительной степени то, что я сделал, я просто запускаю оригинал по правилам каждый раз, когда флажок установлен и снят флажок .... Большое спасибо за быстрый ответ! – Lou
Создайте массив, содержащий значения исходной строки. Выполните все операции с флажком в массиве. Получите окончательную строку вывода, используя этот массив.
var array = ['Moe','Chuck','Larry']
function findItem(val){
var index = array.indexOf(val);
if(index != -1){
array[index] = val;
}
}
function onSubmit(){
return array.toString();
}
- 1. Использование string.replace()
- 2. .NET String.Replace
- 3. Альтернатива string.replace
- 4. JavaScript string.replace()
- 5. String.Replace for "\"
- 6. String.replace «\\» с «/»
- 7. Отмените анимацию, если ACTION_UP
- 8. Отмените панель параметров
- 9. ToolStripMenuItem не отмените
- 10. Отмените изменение ячейки TableView
- 11. Отмените операцию опроса сокетов
- 12. AngularJS - отмените кнопка радио
- 13. QGraphicsItem отмените перерисовывать проблемы
- 14. IOS - Отмените ограничения, анимацию
- 15. Как отмените ol.layer.Vector программно
- 16. Отмените AsyncTask внутри себя
- 17. листовка редактируемые, отмените рисунок
- 18. Отмените обещание от «then»
- 19. Отмените загрузку содержимого NSDataOfUrl
- 20. Javascript Checkbox выберите/отмените
- 21. string.Replace(); с двумя случаями?
- 22. string.replace method in python
- 23. Как использовать string.replace
- 24. спасаясь знак $ для string.replace
- 25. String.Replace() не работает с "|"
- 26. string.replace возвращение двоичной строки
- 27. Метод String.replace() не работает
- 28. string.replace серьезно поврежден \
- 29. string.replace странное поведение
- 30. String.Replace() не работает
Просто держать исходную строку отдельно от преобразования. –
Извините, но что вы спрашиваете? Просто сохраните исходную строку? –
Пожалуйста, покажите нам свой код. – Bergi