猿问

如何获取字符串中双下划线之间的数字并将其与另一个数字相乘?

假设我有一个示例字符串,

let str = "Congrats! ID: 342, your salary is increased by __5%__ and it will increase by __10%__ next month.";

我需要获取双下划线之间的数字(例如: __5%__ 和 __10%__ 如上所示)并将它们乘以 2。所以我的输出应该是,

let result = "Congrats! ID: 342, your salary is increased by __10%__ and it will increase by __20%__ next month.";

注意:数字 342 应保持不变,因为它不在双下划线之间。

我怎样才能得到这个?提前致谢。



饮歌长啸
浏览 113回答 3
3回答

慕姐8265434

您可以使用String.replace()这样的回调函数:let str = "Congrats! ID: 342, your salary is increased by __5%__ and it will increase by __10%__ next month.";let res=str.replace(/__(\d+)%__/g,function(_,num){return "__"+(2*num)+"%__"});console.log(res)

沧海一幻觉

您可以按模式“__”拆分 str。检查str是否以“%”结尾,如果是,则乘以两次即可。并以相同的模式再次加入数组。  str  .split("__")  .map(maybeNumber => {    if (maybeNumber.endsWith("%")) {      return `${parseInt(maybeNumber) * 2}%`    }    return maybeNumber;  })  .join("__")

狐的传说

var str = "Congrats! ID: 342, your salary is increased by __5%__ and it will increase by __10%__ next month.";var idInString = str.match(/\d+/)[0];str = str.replace(idInString,""); // result is "Congrats! ID: , your salary is increased by __5%__ and it will increase by __10%__ next month." Now, with the first number at the beginning of string. Now, we can use the same method to get the other two numbers.var firstNumberInString = str.match(/\d+/)[0];document.write(firstNumberInString*2+"%"); // results in "10%"str = str.replace(firstNumberInString,""); var secondNumberInString = str.match(/\d+/)[0];document.write(secondNumberInString*2+"%"); // results in "20%"
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答