如何从此文本值中删除此括号()(123)

时间:2017-08-02 07:00:27

标签: javascript jquery

如何从此文本值(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);
  }
}




6 个答案:

答案 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.roundMath.ceilparseInt。)
  • parseInt("123abc")可能是也可能不是确保您拥有号码的最佳方式,因为它会在第一个无效字符上停止。例如,123Number。其他选项是parseFloatNumber,两者都允许浮点。 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); }格式化结果):

&#13;
&#13;
{{1}}
&#13;
&#13;
&#13;

答案 2 :(得分:-1)

优化代码:

  1. replaceparseInt移出功能
  2. 从退回parseInt()
  3. 中删除

    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;
   }
}