Wie bekomme ich die Zahl vor 'x'?
Ich habe versucht .split('x')[0]
, es zu verwenden, aber es greift alles vor 'x'.
123x // Gives 123
123y+123x - // Gives 123
123x+123x - // Gives 246
Ich habe eine Funktion getestet, die Regex verwendet, von der ich denke, dass sie funktioniert. Ich habe die Ergebnisse, eine Erklärung der Funktionsweise der Funktion und dann eine kommentierte Version der Funktion eingefügt.
Beachten Sie, dass dies keine komplexere Algebra behandelt, als einfache Begriffe zu addieren und zu subtrahieren. Ich würde mich dafür auf https://newton.now.sh/ beziehen , es ist eine API, die mit Vereinfachung umgehen kann (ich bin nicht verbunden).
Ergebnisse:
console.log(coefficient("-x+23x")); // 22
console.log(coefficient("123y+123x")); // 123
// replaces spaces
console.log(coefficient("x + 123x")); // 124
console.log(coefficient("-x - 123x")); // -124
console.log(coefficient("1234x-23x")); // 1211
// doesn't account for other letters
console.log(coefficient("-23yx")); // 1
Erläuterung:
Zuerst entfernt die Funktion Leerzeichen. Dann verwendet es eine Regex, die jede Zahlenfolge findet, auf die ein 'x' folgt. Wenn ein +/- vorangestellt ist, behält die Regex dies bei. Die Funktion durchläuft diese Zahlenfolgen und addiert sie zu einer Summe. Wenn es ein 'x' gibt, das keine Zahlen enthält, wird sein Koeffizient als -1 oder 1 angenommen.
Kommentierter Code:
function coefficient(str) {
// remove spaces
str = str.replace(/\s/g, '');
// all powerful regex
var regexp = /(\+|-)?[0-9]*x/g
// total
sum = 0;
// find the occurrences of x
var found = true;
while (found) {
match = regexp.exec(str);
if (match == null) {
found = false;
} else {
// treated as +/- 1 if no proceeding number
if (isNaN(parseInt(match[0]))) {
if (match[0].charAt(0) == "-") {
sum--;
} else {
sum++;
}
// parse the proceeding number
} else {
sum += parseInt(match[0]);
}
}
}
return sum;
}
Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.
Bei Verstößen wenden Sie sich bitte [email protected] Löschen.
Lass mich ein paar Worte sagen