如何从此文本值(123)中删除此pamentalhesis()
如何从此文本值(123)中删除此paranthesis()并将其设置为整数,因为我想在代码中重复使用此代码如何优化此对于数学计算 我试着用下面的代码,但它不工作 ()的目的是-ve我需要将它替换为-123和-321,然后做计算calc会喜欢(-321 + 123)= -198和-198再次(198)如何从此文本值(123)中删除此pamentalhesis()
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);
}
}
,您可以尝试
var mystring = '(12345)';
var mystring= mystring.replace(/"/g, "").replace(/'/g, "").replace(/\(|\)/g, "");
console.log(mystring);
var num1 = "(123)";
\t var num2 = "(321)";
\t var sum_value = checkIntegerValue(num1, num2);
\t console.log(sum_value);
\t function checkIntegerValue(num1, num2) {
\t num1 = num1.replace(/"/g, "").replace(/'/g, "").replace(/\(|\)/g, "");
\t num2 = num2.replace(/"/g, "").replace(/'/g, "").replace(/\(|\)/g, "");
\t if (parseInt(num1) && parseInt(num2)) {
\t return parseInt(parseInt(num2) - parseInt(num1));
\t }
\t }
'mystring.replace(/“/ g,”“).replace(/'/ g,”“).replace(/ \(| \)/ g,”“);'和mystring.replace /“|'| \(| \)/ g,”“);' – Justinas
谁downvote?给我理由为什么? –
优化你的代码:
- 移动
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;
}
}
*“将替换和parseInt移出功能”*为什么?是什么让重复比不重复它更好? –
*(不是我的DV)* ... –
@ T.J.Crowder因为他多次使用相同的值,所以最好将重复的逻辑移出功能。功能命名也表示元素必须是整数。 – Justinas
,仅能拍摄numbers.So除了你应该删除别人的正则表达式/[^\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);
}
}
您已成功取出了(
和)
,但有几个问题:
- 将返回
undefined
如果任一数字0
,因为0
是falsy,并且您的if
条件正在检查parseInt
retu对任何一个数字都是一个虚假的值。 - 您正在将字符串中的数字反复转换为数字:一旦使用(
parseInt(num1)
),并且第二次通过-
运算符隐式转换。parseInt
和隐式转换的规则是不同的。最好是有意做一次。 - 你对结果使用
pareseInt
,这没有意义,因为结果是已经是的一个数字。 (如果你想删除一个数的小数部分,不要使用parseInt
,使用Math.floor
,Math.round
,或Math.ceil
。) -
parseInt
可能会或可能不适合你,确保你有一个数字的最佳方式,因为它停在第一个无效字符上。例如,parseInt("123abc")
是123
。其他选项是Number
和parseFloat
,它们都允许浮点运算。Number
的规则与隐式转换的规则相同。parseFloat
,如parseInt
,停在第一个无效字符处。但Number
和隐式转换对待""
作为0
。所以选择你的毒药。 :-) - 而不是检查falsy值,请使用
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);
}
*如果它不是一个整数,返回NaN *你是否做过这个来检查传递的字符串是否是一个浮点数,它的无效?如果是,我不认为这是有意的。 – Rajesh
@Rajesh:OP的代码非常关于整数值,这就是为什么在那里。当然,如果他们想允许带有小数值的数字,他们可以将其删除(并更改各种名称)。 –
我得到了答案
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;
}
}
您正在过度使用'parseInt'。另外为什么'''。num1.replace'? – Justinas
使(123)到-123是的我使用parseInt,因为输入类型不是数字,所以只有 –
我可以知道这个代码有什么问题 –
** [Works fine](https://jsfiddle.net/Guruprasad_Rao/a3npncu3/)** ..有什么问题? –
这工作得很好。 –
只需添加'console.log(value);',你就可以看到它在工作。 –