如何获取'x'之前的数字?
我尝试使用.split('x')[0]
,但它会抓住'x'之前的所有内容。
123x // Gives 123
123y+123x - // Gives 123
123x+123x - // Gives 246
答案 0 :(得分:0)
ggplot(d, aes(x, y)) +
stat_smooth(method = "glm", method.args = list(family = "binomial")) +
geom_point(data = fitted, aes(x, y))

答案 1 :(得分:0)
您可以尝试以下操作:
var a='123x';
var b='123y+123x';
var c='123x+123x';
var patternX = /(\d+)x/g;
function result(res, value){
return res += parseInt(value.replace('x', ''));
}
var first = a.match(patternX).reduce(result, 0);
var second = b.match(patternX).reduce(result, 0);
var third = c.match(patternX).reduce(result, 0);
console.log(first);
console.log(second);
console.log(third);
答案 2 :(得分:0)
我测试了一个使用我认为可行的正则表达式的函数。我已经包含了结果,该函数如何工作的解释,然后是该函数的注释版本。
注意,这并不能处理比添加和减去简单术语更复杂的代数。我会参考https://newton.now.sh/,它是一个可以处理简化的API(我没有附属)。
结果:
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
说明:
首先,该函数删除空格。然后它使用正则表达式,它找到任何数字序列,后跟一个' x'。如果前面有+/-,那么正则表达式就是这样。该函数循环遍历这些数字序列,并将它们添加到总数中。如果有' x'如果没有数字,则系数假定为-1或1。
评论代码:
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;
}
答案 3 :(得分:0)
我不知道ECMAScript正则表达式中是否有足够的聪明才能看后面,但您可以使用 match 进行处理并删除“x”。
如果打算对术语求和,则需要使用 reduce 进行进一步操作。修剪x可以与reduce结合使用,因此不需要 map 。
console.log(
'123x+123x'.match(/\d+x/ig).map(function(v){
return v.slice(0,-1)
}).reduce(function(sum, v){return sum + +v},0)
);