如何从此文本值(123)中删除此括号()并将其设为整数,因为我想在我的代码中重复使用它如何优化此数学计算 我尝试使用下面的代码,但它没有工作 ()的目的是-ve我需要将其替换为-123和-321,然后计算calc将(-321 + 123)= -198和-198再次计算到(198)
var num1 = "(123)";
var num2 = "(321)";
value = checkIntegerValue(num1, num2);
function checkIntegerValue(num1, num2) {
num1 = num1.replace(/\(|\)/g, '');
num2 = num2.replace(/\(|\)/g, '');
if (parseInt(num1) && parseInt(num2)) {
return parseInt(num2 - num1);
}
}

答案 0 :(得分:0)
您只能使用数字。除了您应该使用正则表达式/[^\d]+/g
删除其他字符。 \d
仅表示数字,^
表示否定。所以整个正则表达式定义了如果不是数字,则用空值替换它。例如''
。
var num1 = "(123)";
var num2 = "(321)";
value = checkIntegerValue(num1,num2);
console.log(value);
function checkIntegerValue(num1,num2){
num1 = num1.replace(/[^\d]+/g, '');
num2 = num2.replace(/[^\d]+/g, '');
if(parseInt(num1) && parseInt(num2)){
return parseInt(num2-num1);
}
}
答案 1 :(得分:0)
您已成功删除(
和)
,但有几个问题:
undefined
,则会返回0
,因为0
是 falsy ,而您的if
条件正在检查parseInt
是否parseInt(num1)
1}}返回任一数字的假值。-
),第二次是通过parseInt
运算符隐式转换。 pareseInt
和隐式转换的规则不同。最好是故意这样做一次。parseInt
,因为结果已经一个数字,这是没有意义的。 (如果您要删除数字的小数部分,请不要使用Math.floor
,请使用Math.round
,Math.ceil
或parseInt
。)parseInt("123abc")
可能是也可能不是确保您拥有号码的最佳方式,因为它会在第一个无效字符上停止。例如,123
是Number
。其他选项是parseFloat
和Number
,两者都允许浮点。 parseFloat
的规则与隐式转换的规则相同。与parseInt
一样,Number
会在第一个无效字符处停止。但""
和隐式转化会将0
视为isNaN
。所以选择你的毒药。 : - )()
查看从字符串到数字的转换是否失败,而不是检查虚假值。()
意味着数字为负数,则您需要知道是否删除了这些数字并否定了结果。查看评论(我还使用了一个函数,当值为负时,使用test("(123)", "(321)");
test("123", "(321)");
test("123", "321");
function test(str1, str2) {
console.log(str2 + " - " + str1 + " = " + formatNumber(checkIntegerValue(str1, str2)));
}
function convertInt(str) {
// Trim the string
str = str.trim();
// Flag up if negative
var sign = str[0] === "(" ? -1 : 1;
// Remove ()
str = str.replace(/\(|\)/g, '');
// If the string is blank, return NaN
if (!str.length) {
return NaN;
}
// Otherwise, parse as number
var num = Number(str);
// If it's not an integer, return NaN
if (Math.floor(num) != num) {
return NaN;
}
// Apply sign and return
return num * sign;
}
// I'd give this a name more accurately describing what it does
function checkIntegerValue(str1, str2) {
var num1 = convertInt(str1);
var num2 = convertInt(str2);
if (isNaN(num1) || isNaN(num2)) {
return undefined;
}
return num2 - num1;
}
function formatNumber(num) {
return num < 0 ? "(" + (-num) + ")" : String(num);
}
格式化结果):
{{1}}&#13;
答案 2 :(得分:-1)
优化代码:
replace
和parseInt
移出功能parseInt()
var num1 = parseInt("(123)".replace(/\(|\)/g, ''));
var num2 = parseInt("(321)".replace(/\(|\)/g, ''));
value = checkIntegerValue(num1, num2);
function checkIntegerValue(num1, num2) {
if (num1 && num2) {
return num2 - num1;
}
}
答案 3 :(得分:-2)
function checkIntegerValue(num){
return +num.replace(/\(|\)/g,'');
}
应该有效
答案 4 :(得分:-2)
你可以尝试一下
var mystring = '(12345)';
var mystring= mystring.replace(/"/g, "").replace(/'/g, "").replace(/\(|\)/g, "");
console.log(mystring);
var num1 = "(123)";
var num2 = "(321)";
var sum_value = checkIntegerValue(num1, num2);
console.log(sum_value);
function checkIntegerValue(num1, num2) {
num1 = num1.replace(/"/g, "").replace(/'/g, "").replace(/\(|\)/g, "");
num2 = num2.replace(/"/g, "").replace(/'/g, "").replace(/\(|\)/g, "");
if (parseInt(num1) && parseInt(num2)) {
return parseInt(parseInt(num2) - parseInt(num1));
}
}
答案 5 :(得分:-2)
我得到了答案
var num1 = "(123)";
var num2 = "(321)";
checkIntegerValue(num1, num2)
function checkIntegerValue(num1, num2) {
if(!parseInt(num1) && num1!=""){
num1 = "-"+num1.replace(/\(|\)/g, '');
}
if(!parseInt(num2) && num2 !=""){
num2 = '-'+num2.replace(/\(|\)/g, '');
}
if (parseInt(num1) && parseInt(num2)) {
return num2 - num1;
}else{
return 0;
}
}