根据给定的规则更换字母

时间:2018-03-30 22:01:37

标签: javascript

有一个规则列表。规则指定如何更改输入的单词。屏幕截图显示了该程序应如何工作的示例。结果应该是一个字符串" aBct"。我不明白该怎么做。



function pushRules(list){
    var rules = "";
    var w1 = document.getElementById('inputw1').value;
    var w2 = document.getElementById('inputw2').value;
    var w = w1+'-->'+w2;
    var li = document.createElement("li");
    var rule = document.createTextNode(w);
    li.appendChild(rule);
}

function applyRule() {
    var str = document.getElementById('inputString').value;
    var numRule = document.getElementById('inputNumRules').value;

    for(var i=0; i<str.length; i++){
      // ...
    }
}
&#13;
<div class="addRules">
    <h3>Add Rules</h3>
    <form>
        <label>w1:</label><input id="inputw1" type="text"><label> --> w2:</label><input id="inputw2" type="text">
        <input type="button" value="Add" onclick="pushRules()">
    </form>
    <h3>Rules:</h3>
    <div class="container_rules">
        <ui id="list"></ui>
    </div>
</div>

<h3>Input string</h3>
<input type="text" id="inputString">
<form>
    <p>Apply the selected rule to the symbol at number:</p><input type="text" id="inputNumRules" value="0">
    <input type="button" value="Apply rule" onclick="applyRule()">
</form>
<h3>Result</h3>
&#13;
&#13;
&#13;

2 个答案:

答案 0 :(得分:0)

如果我正确理解了这个问题,你只需要在输入字符串中用其他字符替换几个字符。

您可以使用 replace() 方法。

所以你要做的就是,

"aBcah".replace(/ah/g,'t');

这意味着,在字符串 aBcah 中用 t 替换所有出现的 ah

我在这里使用了正则表达式,而/ g表示删除所有(全局标志),没有它,它只会删除第一次出现。

&#13;
&#13;
var a = "aBcah".replace(/ah/g,'t');
console.log(a);
&#13;
&#13;
&#13;

答案 1 :(得分:0)

工作解决方案。

只需插入规则,然后从0开始写下您要应用的规则数

&#13;
&#13;
var changeStringFromRules = [];
        var changeStringToRules = [];

        function pushRules(list){
            var rules = "";
            var w1 = document.getElementById('inputw1').value;
            changeStringFromRules.push(w1);
            var w2 = document.getElementById('inputw2').value;
            changeStringToRules.push(w2);
            var w = w1+'-->'+w2;
            var li = document.createElement("li");
            var rule = document.createTextNode(w);
            li.appendChild(rule);
            document.getElementById("list").appendChild(li);
        }

        function applyRule() {
            var str = document.getElementById('inputString').value;
            var numRule = parseInt(document.getElementById('inputNumRules').value);

            if(str.indexOf(changeStringFromRules[numRule])!== -1){
                str = str.replace(changeStringFromRules[numRule], changeStringToRules[numRule]);
            }
            document.getElementById("result").innerHTML = str;
        }
&#13;
<div class="addRules">
    <h3>Add Rules</h3>
    <form>
        <label>w1:</label><input id="inputw1" type="text"><label> --> w2:</label><input id="inputw2" type="text">
        <input type="button" value="Add" onclick="pushRules()">
    </form>
    <h3>Rules:</h3>
    <div class="container_rules">
        <ui id="list"></ui>
    </div>
</div>

<h3>Input string</h3>
<input type="text" id="inputString">
<form>
    <p>Apply the selected rule to the symbol at number:</p><input type="text" id="inputNumRules" value="0">
    <input type="button" value="Apply rule" onclick="applyRule()">
</form>
<h3>Result</h3>
<p id="result"></p>
&#13;
&#13;
&#13;