在字符串中使用英寸表示法提取数值并返回较大的数值
Extract numeric values with inch notation in a string and return larger one
我正在尝试从具有类似名称的产品中提取尺寸信息。
Product A 30" Metalic Grey
Product B 31.50" Led 54 watt
Product C 40"-60" Dark Green
我当前获取尺寸信息的代码是
var product_name = $(this).text();
product_name.split('"')[0].slice(-2);
我很难处理点数,例如 31.50"。
有没有更好的方法可以从上面的示例产品名称中提取尺寸,也适用于产品名称,例如具有尺寸范围的第三个产品,它需要返回更大的数值,即 60。
如果要从字符串中获取所有大小,可以使用正则表达式['d.]+(?=")
:
var sizes = text.match(/['d.]+(?=")/g);
这将返回一个字符串数组,例如 ["31.50"]
或 ["40", "60"]
。
您可以进一步处理数组,例如将元素转换为数字:
sizes = sizes.map(Number); // ["31.50"] -> [31.50]
和/或获得最大值:
var maxSize = Math.max.apply(null, sizes); // ["40", "60"] -> 60
这个呢?
product_name.replace(/^.*?(['d'.]+)"[^"]*$/, '$1');
您需要在
第一个"
符号处分开,然后找到它之前的最后一个空格:
var product_name = $(this).text();
var size = product_name.split('"')[0];
var space = product_name.lastIndexOf(' ');
size.slice(space, -1);
那会给你从"
的一切,然后回到它之前的空间。
下面是一个示例,它将使用正则表达式来查找字符串,然后返回最大的字符串,遍历每个示例字符串:
var t = [
'Product A 30" Metalic Grey',
'Product B 31.50" Led 54 watt',
'Product C 40"-60" Dark Green'
]
var getMaxInches = function(str) {
var inches = str.match(/[0-9]+('.[0-9]+)?"/g); // The inches format pattern
var maxMeasure = 0;
for(i in inches){
var measure = (inches[i]).slice(0,-1); // remove the trailing "
maxMeasure = Math.max(Number(measure),maxMeasure);
}
return maxMeasure;
}
for(var i in t) alert(getMaxInches(t[i]));
相关文章:
- 如何抓取使用直接Web远程处理(DWR)返回操纵页面的Javascript的网站's的HTML
- 试图在网站上抓取谷歌地图api生成的动态数据,但正常抓取返回空白
- 在字符串中使用英寸表示法提取数值并返回较大的数值
- 抓取外部网站,但返回“您必须在此站点上使用支持 JavaScript 的浏览器”错误
- 节点.js在抓取 HTML 时返回 null
- 如何使用 ajax 一次抓取一页,返回下一页链接并再次访问
- 在 Google 应用脚本中返回多个参数值
- .done() 函数在抓取本地 JSON 文件时未在 AJAX 调用返回的承诺上运行
- 没有参数的jQuery outerHeight()函数返回对象而不是参数值
- querySelector在尝试访问作为元素ID的数值时返回未定义的字符串
- event在使用钻取时返回空点数据
- 不能理解为什么这个函数返回false如果我改变参数值
- 如何从浏览器c#返回javascript函数值
- Ng-show不能处理返回的函数值
- 如何从ES6类中的getter函数返回构造函数参数值
- 抓取并在express中作为json返回
- jQuery/JS函数值返回
- 返回lodash模板中的函数值
- 使用异步函数返回的数据的正确方法(web抓取示例)
- 调用Javascript返回web抓取的数据