首页 > 解决方案 > 无法将字符串转换为数字

问题描述

我有一个大文本,我根据该方案从中读取数据。关键字放在“smallArtName”数组中。该方案如下所示:

(关键词) xxx (cordX|cordY)

我无法将收到的字符串转换为数字。在我看来,原因是空白,在图片中的终端中可见。我尝试使用适用于示例文本的替换方法,但不适用于我的价值。

我是初学者,我可能会做得更简单,但我编写的代码有效,这是目前最重要的事情。

for (i = 0; i < smallArtName.length; i++) {
   var n = art.artPrintScreen.indexOf(smallArtName[i]);
   if (n > 0) {
    var tempString = art.artPrintScreen.substring(n, n + 100);
    betweenChar = tempString.indexOf('|');
    for (k = betweenChar - 10; k <= betweenChar + 10; k++) {
     if (tempString[k] == '(') {
      xStart = k;
     }
     if (tempString[k] == ')') {
      yEnd = k;
     }
    }
    cordX = tempString.slice(xStart + 1, betweenChar);
    cordY = tempString.slice(betweenChar + 1, yEnd);

    strTest = "  t est".replace(/\s/g, '')
    var cordY2 = cordY.replace(/\s/g, '')

    console.log(typeof (cordY))
    console.log(cordY2)
    console.log(cordY2[0])
    console.log(cordY2[1])
    console.log(cordY2[2])
    console.log(cordY2[3])
    console.log(cordY2[4])
    console.log(cordY2[5])

    console.log(strTest)

    var cordYtest = parseInt(cordY2, 10);
    console.log(cordYtest)
   }
  }

文本

标签: javascript

解决方案


您只需要更改正则表达式,以便替换除数字和负号之外的所有内容 - 而不仅仅是空格。IE

改变

var cordY2 = cordY.replace(/\s/g, '')

var cordY2 = parseInt(cordY.replace(/[^0-9-]/g, ''), 10);

以便变量cordY2包含您需要的数字。


推荐阅读