首页 > 解决方案 > 从数字中删除空格 - 保持其余部分不变

问题描述

完全披露:我不是程序员(这可能会在一秒钟内显而易见)。我经常将数字从一张纸复制到另一张纸上,大于 999 的数字在第一个和第二个数字之间有一个空格。我试图制作脚本(在我在这里找到的类似脚本的帮助下),只需单击一个按钮即可删除这些空格,但它只是有点工作。

这是包含我的代码的示例表:https ://docs.google.com/spreadsheets/d/11_CWZfhBupUpBKYi7I9cwGBakSr4LikOm0bGft6YA7Q/edit?usp=sharing

我已经尽力修改正则表达式来做我想做的事,但我想我的知识太差了。

....
function Remove_space() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Input");

  var r = sheet.getRange("E4:E50");
  var v = r.getValues();

  for(var k=0;k<v.length;k++)
    for(var j=0;j<v[0].length;j++)
      v[k][j]=v[k][j].toString().replace(/\s/g, "");
  r.setValues(v);
};
....

任何人都可以帮助我并让空格消失但保持我的逗号完整吗?

它确实删除了空格,但由于某种原因,它还将我的逗号(小数分隔符)转换为句点。如果没有小数,那没问题。

标签: regexgoogle-apps-script

解决方案


问题:

  • 字符串转换: Javascript 不支持,作为小数分隔符。因此,当您 getValue() 时,它们会自动转换为.. 当你setValue(),它会被转换回,。但是在函数执行期间,您使用.toString(),这使得期间.永久。

解决方案:

  • Get as String 类型:如果getDisplayValues()您想将数字作为字符串获取,,并保持小数点分隔符不变,请使用此选项。或者

  • 设置为数字类型:将正则表达式替换的字符串转换回数字。在这种情况下,您还应该手动将逗号转换,为句.,以将其转换回数字类型。

片段:

 r.getDisplayValues();

或者

v[k][j]=Number(v[k][j].toString().replace(/\s/g, "").replace(/\,/g,"."));

参考:


推荐阅读