【问题标题】:Remove space from numbers - Leave rest intact从数字中删除空格 - 保持其余部分不变
【发布时间】:2019-06-24 12:45:21
【问题描述】:

完全披露:我不是程序员(这可能会在一秒钟内显而易见)。我经常将数字从一张纸复制到另一张纸上,大于 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);
};
....

谁能帮助我,让空格消失,但让我的逗号保持原样?

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

【问题讨论】:

  • 刚试过这个,它所做的就是删除空格,对我来说看起来不错。您是否会将此函数作为更大脚本的一部分运行?
  • 感谢您的回答。发布的代码就是全部。也许可能是您的语言环境与我不同,这使得它无论如何都可以工作。

标签: regex google-apps-script


【解决方案1】:

问题:

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

解决办法:

  • 获取为字符串类型:如果您想以字符串形式获取数字,而 , 作为小数点分隔符不变,请使用 getDisplayValues()。或者

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

片段:

 r.getDisplayValues();

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

参考资料:

【讨论】:

  • 非常感谢您提供了一些启发。 DisplayValues 成功了。
猜你喜欢
  • 2021-11-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-05
相关资源
最近更新 更多