gpt4 book ai didi

javascript - 清理 javascript/jquery 中的字符串

转载 作者:行者123 更新时间:2023-12-03 06:01:15 25 4
gpt4 key购买 nike

嗨,我有以下代码

HTML:

<div ng-app="myApp" ng-controller="myController">
<input ng-model="value">
<button ng-click="checkValue()">Check value</button>
</div>

Controller :

angular.module("myApp", []).controller("myController", function($scope) {
$scope.value = '';

$scope.acceptedValuesList = {
"Items": [{
id: 1,
name: 'MI'
}, {
id: 2,
name: 'MO'
}, {
id: 3,
name: 'AB'
}]
};

$scope.checkValue = function() {
if (acceptedValuesList.Items.find((item) => item.text == $scope.value)) {
console.log("accepted value");
} else {
// SANITIZE VALUE UNTIL IT'S CORRECT
}
}
});

当我在输入中写入数组(“MI”、“MO”或“AB”)中的字符串之一并单击按钮时,它会在我的列表中搜索该字符串,如果值在输入与三个字符串之一匹配时,我在控制台中打印一条小消息。这很好用。因此,如果还有另一个字母,我想清理输入中的值。例如,当我在输入中写入“ABx”并按下按钮时,它应该删除“x”并在输入中显示“AB”。我怎样才能做到这一点?我没有找到任何可以帮助我的东西。我希望这已经足够清楚了。谢谢。

编辑:我自己的解决方案:

这是我的解决方案:我在输入字段中写入一个值:input value = xyAbs;

首先,我使用 toUpperCase() 来忽略区分大小写。

然后我使用 find() 遍历列表并在当前循环项目中搜索我的值。

$scope.value.toUpperCase(); // $scope.value = 'XYABS'

let item = $scope.acceptedValuesList.Items.find((item: any) => $scope.value.search(item.name) >= 0); // item = object in the list with id = 3 and name = 'AB'

之后,我检查是否找到了某个项目,因此我在输入中的值位于列表中的项目之一中。我使用 substr() 从名称长度开始的位置获取值中的子字符串。之后我得到了我的绳子。如果没有找到项目,那么我的字符串是错误的,我清除输入:

if(item) {
$scope.value = $scope.value.substr($scope.value.search(item.name), item.name.length); // $scope.value = 'AB'
} else {
$scope.value = '';
}

这对我来说效果很好,我希望它足够清楚。谢谢。 :)

最佳答案

您可以使用观察并比较这些值

$scope.$watch('value', function(newVal, oldVal) {
var newText;
if(newVal.indexOf("MI") > 0) {
newText = "MI";
} else if(newVal.indexOf("MO") > 0) {
newText = "MO";
} else if(newVal.indexOf("AB") > 0) {
newText = "AB";
}
$scope.value = newText;
});

关于javascript - 清理 javascript/jquery 中的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39744244/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com