javascript - 如何捕获度量(数字和/或单位)和度量的事项并始终确保相同的度量格式/模式?
问题描述
我只是想了解 javascript,因为我对它有点陌生,而且它是一种功能强大的语言。
我想知道如何重新排列字符串中的单词和数字,以便某些单词始终位于前面。因此,在这种情况下,数字和测量值将始终位于值的前面。
例如,输入的所需输出:
Function input: Wood Plank 1 cm
Function output: 1 cm Wood Plank
Function input: Lawn Mower 1
Function output: 1 Lawn Mower
Function input: Tape Measure
Function output: Tape Measure
我有我制作的这个正则表达式,但我需要知道如何应用它
const unitCapturingRegX = (/^(?<amount>¼|½|¾|\d+\/\d+|\d+)\s*(?<value>.*)$/);
我在下面得到了一些测量结果:
const measures = [
"cm", "m", "kg", "kgs", "kilogram", "kilograms", "l", "liter" ,"tbs","meter", "inch",
];
这是我的输入值:
const inputVal = [
'Tape 1/2 cm',
'1kg cement',
'3 l water',
'carbon fibre ½ inch'
]
这是可能的事情吗,请有人帮助我!
解决方案
将单位添加到正则表达式的末尾
var re = /(.*)\s(¼|½|¾|\d+\/\d+|\d+)\s?(cm|m|kg|kgs|kilogram|kilograms|l|liter|tbs|meter|inch)?$/;
const inputVal = [
'Tape 1/2 cm',
'cement 1kg',
'1kg cement',
'3 l water',
'water 3 l',
'carbon fibre ½ inch',
'Lawn Mower 1'
]
const altered = inputVal.map(function(str) {
return str.replace(re, "$2 $3 $1") // or "$2$3 $1"
})
console.log(altered);
并从数组中生成它
const measures = [
"cm", "m", "kg", "kgs", "kilogram", "kilograms", "l", "liter" ,"tbs","meter", "inch",
];
var units = measures.join("|");
var re = new RegExp("(.*)\\s(¼|½|¾|\\d+\\/\\d+|\\d+)\\s?(" + units + ")?$");
const inputVal = [
'Tape 1/2 cm',
'cement 1kg',
'1kg cement',
'3 l water',
'water 3 l',
'carbon fibre ½ inch'
]
const altered = inputVal.map(function(str) {
return str.replace(re, "$2 $3 $1") // or "$2$3 $1"
})
console.log(altered);
推荐阅读
- java - 如何在命令行中运行打包在另一个jar文件中的jar文件?
- apache - 通过 www.example.com 在 localhost:8000 上为 wordpress 重定向 Apache 虚拟主机
- apache-poi - Liferay:使用 Apache POI 读取 Excel 数据
- r - 如何从r中的列表列表中删除零向量
- java - Springboot 将 @PersistenceContext EntityManager 附加到 @Bean
- go - 从 codecommit 获取私人仓库
- elasticsearch - Logstash 创建管道但未创建索引
- java - CountDown Timer OnTick 方法在我给时间时不起作用
- azure - 如何配置 Azure 服务总线队列以将消息推送到客户端而不进行轮询?
- ip - 无法通过主机上的 IP 地址 ping 或远程桌面进入 Hyper-V PC