regex - 从数字中删除空格 - 保持其余部分不变
问题描述
完全披露:我不是程序员(这可能会在一秒钟内显而易见)。我经常将数字从一张纸复制到另一张纸上,大于 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);
};
....
任何人都可以帮助我并让空格消失但保持我的逗号完整吗?
它确实删除了空格,但由于某种原因,它还将我的逗号(小数分隔符)转换为句点。如果没有小数,那没问题。
解决方案
问题:
- 字符串转换: Javascript 不支持
,
作为小数分隔符。因此,当您 getValue() 时,它们会自动转换为.
. 当你setValue()
,它会被转换回,
。但是在函数执行期间,您使用.toString()
,这使得期间.
永久。
解决方案:
Get as String 类型:如果
getDisplayValues()
您想将数字作为字符串获取,,
并保持小数点分隔符不变,请使用此选项。或者设置为数字类型:将正则表达式替换的字符串转换回数字。在这种情况下,您还应该手动将逗号转换
,
为句.
,以将其转换回数字类型。
片段:
r.getDisplayValues();
或者
v[k][j]=Number(v[k][j].toString().replace(/\s/g, "").replace(/\,/g,"."));
参考:
- 数字
- Range#getDisplayValues:注意它返回
String []
,而getValues()
返回Object []
推荐阅读
- string - 如何找到不一定相等长度的字符串的汉明距离?
- main - iOS和Android是否支持html5标签
? - node.js - 如何取消busboy / express文件上传流(中流)
- c - 如何从节点中找到所有简单路径?
- django - 为什么 django-rest-framework 将令牌存储在数据库中?
- android - MPAndroidChart - 如何在 x 轴上仅显示一次日期,数据点以毫秒为单位?
- python-3.x - 如何在 keras 中打印标记化的数据?
- linux - 如何以系统和分层的方式列出所有进程的环境变量
- javascript - 如何在字符串中添加上标和下标?
- reactjs - 如何从反应钩子中的字符串名称动态执行适当的useState?