用插入符号将字符串拆分为2个部分

时间:2016-01-17 00:04:39

标签: javascript arrays regex string split

我有一个输入字段,其中用户可以键入表达式来表示像2^5这样的权力。

我使用以下代码尝试使用插入符分割此字符串,然后使用Math.pow()评估功能:

var display = $('#disp').val();
var values = display.split('^');
console.log(values);

var base = values[0];
var exponent = values[1];

var powerCalc = Math.pow(values[0],values[1]);

然而,控制台会返回:

Array [ "2", "" ]

和表达式,无论基数如何,总是计算为1(这是有道理的)。也就是说,如何通过split()更改此代码以将第二个值存储在此数组中?

注意:我已经尝试将分割数量限制为2,并且控制台返回相同的内容。

我还应该注意,我正在使用一个按钮来添加插入符号(如果这有所不同)通过此函数:

function addChar(input, character) {
  if (input.value == null || input.value == "0"){
    input.value = character}
  else{
    input.value += character}
};

$('#button-power').click(function(){
    addChar(this.form.display, '^');
});

这将在点击时显示结果:

$('#button-enter').click(function(){
    $('#disp').val(powerCalc);
 });

表单的脚本也包含此函数:

function checkNum(str) {
  for (var i = 0; i < str.length; i++) {
    var ch = str.substring(i, i + 1)
    if (ch < "0" || ch > "9") {
      if (ch != "/" && ch != "*" && ch != "+" && ch != "-" && ch != "." && ch != "(" && ch != ")" && ch != "%" && ch != "^") {
      $('#disp').val("Error");
        return false
      }
    }
  }
  return true
}

2 个答案:

答案 0 :(得分:0)

我没有看到问题。看起来你的代码运行得很好。

$('#calc').click(function () {
  var display = $('#disp').val();
  var values = display.split('^');
  console.log(values);

  var base = values[0];
  var exponent = values[1];

  var powerCalc = Math.pow(values[0],values[1]);
  $('#out').text(powerCalc);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="disp" type="text" /><button id="calc">Pow!</button>&nbsp;=&nbsp;<span id="out"></span>

答案 1 :(得分:0)

我也添加了一个小型控制台。这对我有用,这样:

$(function () {
  var console = {
    log: function (v) {
      $("#console").append('Console: ' + v + "\n");
      window.console.log(v);
    }
  }
  $("#sub").click(function () {
    var display = $('#disp').val();
    var values = display.split('^');
    console.log(values);

    var base = values[0];
    var exponent = values[1];

    var powerCalc = Math.pow(values[0],values[1]);
  });
});
* {font-family: Segoe UI;}
#console {position: fixed; bottom: 0; left: 0; right: 0; height: 100px; overflow: auto; font-family: consolas; background: #ccc; border-top: 1px solid #999; margin: 0; font-size: 10pt;}
#console strong:first-child {background: #eee; border-bottom: 1px solid #999; display: block; padding: 3px;}
<script src="https://code.jquery.com/jquery-1.11.3.js"></script>
<input type="text" id="disp"><input type="submit" value="Calc" id="sub" />
<pre id="console"><strong>Console:</strong></pre>

相关问题