繁体   English   中英

比较字符串中的最后两个字符

[英]Compare two last character in a string

我在AngularJS中编写计算器。 我被验证用户输入卡住了。 我不希望用户能够彼此相邻地输入两个2运算符(“ +”,“ /”,“ *”)。 因此,每次,我都尝试比较字符串的最后一个字符和倒数第二个字符。 但是我总是发现我有两个操作符。

var app = angular.module("myApp", []);

app.controller("myCtrl", function ($scope) {

  $scope.expression = "";

  var liste = ['+', '/', '*'];

  $scope.add = function (ope) {

    $scope.expression += String(ope);

    var der = $scope.expression[$scope.expression.length - 1];
    var avantDer = $scope.expression[$scope.expression.length - 2];

    if ($scope.expression.length > 3 && liste.includes(der) && liste.includes(avantDer)) {
      alert("error");
    } else {
      $scope.expression += String(ope);
    }
  };
});

你很亲密 问题是您要在检查表达式是否有效之前将其添加到表达式中。 最好将现有表达式的最后一个字符和新字符作为一个单独的变量进行检查。

您还想检查expression的长度是否大于0而不是3,否则,当长度小于3时,用户可以立即输入两个'+'字符。

 var app = angular.module("myApp", []); app.controller("myCtrl", function ($scope) { $scope.expression = ""; var liste = ['+', '/', '*']; $scope.add = function (ope) { // don't add to expression, just store into der var der = String(ope); var avantDer = $scope.expression[$scope.expression.length - 1]; if ($scope.expression.length > 0 && liste.includes(der) && liste.includes(avantDer)) { alert("error"); } else { $scope.expression += der; } }; }); 
 <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> <div ng-app="myApp" ng-controller="myCtrl"> <div> <button ng-click="add('+')">+</button> <button ng-click="add('*')">*</button> <button ng-click="add('/')">/</button> </div> <div> <button ng-click="add('1')">1</button> <button ng-click="add('2')">2</button> <button ng-click="add('3')">3</button> </div> {{expression}} </div> 

有两件事是错误的。

  1. $scope.expression.length > 3应该是$scope.expression.length > 2
  2. 您正在调用$scope.expression += String(ope); 两次

我在下面做了一个小的更改,因此可以在代码段窗口中运行它。

我还为liste添加了减法。

 var $scope = { expression: "" }; var liste = ['+', '/', '*', '-']; debugger $scope.add = function (ope) { var temp = $scope.expression + String(ope); console.log(temp); var len = temp.length - 1; if (len > 1) { var der = temp[len]; var avantDer = temp[len - 1]; if (liste.includes(der) && liste.includes(avantDer)) { console.log("error"); } else { $scope.expression = temp; } } else { $scope.expression = temp; } }; $scope.add('3'); $scope.add('+'); $scope.add('-'); 

当我调用$scope.add('-'); 它会显示您期望的错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM