我想在我的google电子表格中进行以下转换:
- 6视图->6
- 73K视图->73000
- 3650→3650
- 163K视图->163000
- 1.2K视图->1200
- 52.5 k→52500
所有数据都在一列中,根据情况,我需要应用特定的转换。我试图把所有的正则表达式在一个公式,但我失败了。我总是有两个正则表达式的情况。
无论如何,我最终在不同的列中一个case一个case地制作这些正则表达式。它工作得很好,但我觉得它可能会减慢工作表,因为我需要大量的数据进入这个工作表。
表格如下:
谢谢你的帮助!
使用regexreplace()
,像这样:
=arrayformula(
iferror( 1 /
value(
regexreplace(
regexreplace(trim(A2:A), "s*K", "e3"),
" views", ""
)
)
^ -1 )
)
查看示例电子表格。
使用regex:/(?<=(d*.?d+K?)) views/gi
替换'views'要将'K'替换为十进制值或不替换为十进制值,首先检测K,然后将K替换为空字符串并乘以1000。
使用回调函数
txt.replace(/(?<=(d*.?d+K?)) views/gi, '').replace(/(?<=d).?d+K/g, x => x.replace(/K/gi, '')*1000)
代码:
arr = [`6 views`,
`73K views`,
`3650`,
`163K views`,
`1.2K views`,
`52.5K`];
arr.forEach(txt => {
console.log(txt.replace(/(?<=(d*.?d+K?)) views/gi, '').replace(/(?<=d).?d+K/g, x => x.replace(/K/gi, '')*1000))
})
输出:
6
73000
3650
163000
1200
52500
假设您的输入在a列中。允许空单元格。在其他列中
=arrayformula(if(A2:A<>"",value(substitute(substitute(A2:A," views",""),"K","e3")),))
。
根据需要调整范围A2:A
。
还要注意带有空字符串的非空单元格将被忽略。
基本上,由于Google Sheet的regex引擎不支持环顾四周,因此在应用程序中利用相当严格的模式并使用substitute()
会更有效。