給定一個表示數學運算的字串,我想提取它包含的運算,例如:5 4-3將回傳兩個arrays:Operations =[ ,-]并且運算元將是[5,4,3]
// grab the input and so stuff when user finishes typing
const selectElement = document.querySelector('.formule');
selectElement.addEventListener('change', (event) => {
const result = document.querySelector('.result');
segmentFormule(event.target.value);
});
const segmentFormule = function (value){
// first separate operands from operations
let myOperands = [];
const formule = new String(value);
// here i extracted the operands into an array, but i couldnt figure out how to extract the operations , so i just hardcoded Addition operation for now.
myOperands=formule.split(" ");
let ColoredFormule = "";
for (var i = 0 ; i < myOperands.length ; i ) {
ColoredFormule =
'<span style="color:Red">' myOperands[i] '</span> ' '<span style="color:blue"> </span> ';
}
document.querySelector('.result').innerHTML = ColoredFormule;
}
<label for="formuleField">Example input: 56 400 300</label>
</br>
<input type="text" class="formule" name="formuleField">
</br>
<div class="result"></div>
我無法弄清楚如何從給定的輸入中提取操作,任何幫助表示贊賞。
uj5u.com熱心網友回復:
使用正則運算式創建兩個陣列match。第一場比賽將匹配所有無數字,第二場比賽將匹配所有數字。
如果您希望map在Number為回呼傳入的陣列上使用運算子陣列中的整數。
const str = '5 4-36';
const operations = str.match(/[^\d]/g);
const operands = str.match(/\d /g).map(Number);
console.log(operations, operands)
uj5u.com熱心網友回復:
您可以將正則運算式與 string.match() 一起使用
(注意數字是字串,如果您需要數字,則必須進行轉換)
let value = '56 400-300/200*10'
const operatorsRegex = /[ -/*]/g
let operators = value.match(operatorsRegex)
console.log(operators) // [' ','-','/','*']
const digitsRegex = /\d /g
let digits = value.match(digitsRegex)
console.log(digits) // ["56", "400", "300", "200", "10"]
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/355198.html
標籤:javascript 数组 分裂
下一篇:阻止useState呈現初始值
