Javascript 将距离字符串转换为数字
当使用GoogleAPI计算两个位置之间的距离时,它以字符串格式返回距离 例如:1585公里、54公里等Javascript 将距离字符串转换为数字,javascript,parsing,Javascript,Parsing,当使用GoogleAPI计算两个位置之间的距离时,它以字符串格式返回距离 例如:1585公里、54公里等 我想把它转换成一个数字。将1525 KM这样的字符串转换为1525这样的数字的最佳方法是什么?尝试使用parseInt,.replace()替换为RegExp/^\d+]/来替换输入文本中不是数字的字符 var text=“1525公里”; var n=parseInt(text.replace(/[^\d+]/g,”); 控制台日志(n)尝试使用parseInt,.replace()替换
我想把它转换成一个数字。将1525 KM这样的字符串转换为1525这样的数字的最佳方法是什么?尝试使用
parseInt
,.replace()
替换为RegExp
/^\d+]/
来替换输入文本中不是数字的字符
var text=“1525公里”;
var n=parseInt(text.replace(/[^\d+]/g,”);
控制台日志(n)
尝试使用parseInt
,.replace()
替换为RegExp
/[^\d+]/
来替换输入文本中不是数字的字符
var text=“1525公里”;
var n=parseInt(text.replace(/[^\d+]/g,”);
控制台日志(n)
如果使用,则在距离
对象中有另一个名为值
的字段,该字段具有数字值。如API中所述,单位为米
但为了回答您最初的问题,我将使用正则表达式从字符串中删除所有非数字字符:
var dist = '1,525 KM';
dist = Number(dist.replace(/[^\d]/g, ''));
如果正在使用,则距离
对象中另一个名为值
的字段具有数字值。如API中所述,单位为米
但为了回答您最初的问题,我将使用正则表达式从字符串中删除所有非数字字符:
var dist = '1,525 KM';
dist = Number(dist.replace(/[^\d]/g, ''));
强烈建议使用距离
值
而不是文本。因为它可以是
格式,也可以是1.525 KM
格式
因此,正如所说,使用的值总是以米为单位,你可以将其转换为你的格式,根据我的意见,这是一个更干净的解决方案
valueInKm = value * 0.001
强烈建议使用距离
值
而不是文本。因为它可以是
格式,也可以是1.525 KM
格式
因此,正如所说,使用的值总是以米为单位,你可以将其转换为你的格式,根据我的意见,这是一个更干净的解决方案
valueInKm = value * 0.001
如果可以使用
、
或
作为小数点,并且可以使用小数点,则可以使用类似的方法以{value:Number,units:String}
格式返回结构:
function getDistance( dist ){
var match = /^([+-]?[1-9]\d{0,2}(?:(?:([,.])(?:\d{3}\2)*\d{3}(?:(?!\2)[,.]\d+)?)|[,.]\d+)?|[+-]?0(?:[,.]\d+)?) (.+)$/
.exec( dist );
if ( match ){
return {
value: parseFloat( match[1].split( match[2] ).join( '' ).replace( ',', '.' ), 10 ),
units: match[3]
};
}
return { value: null, units: null };
}
测试:
var results = [
{ in: "0 m", dist: 0, units: "m" },
{ in: "10 m", dist: 10, units: "m" },
{ in: "0.2 m", dist: 0.2, units: "m" },
{ in: "0,2 m", dist: 0.2, units: "m" },
{ in: "1,202 m", dist: 1202, units: "m" },
{ in: "1,524.2 KM", dist: 1524.2, units: "KM" },
{ in: "1.524,2 KM", dist: 1524.2, units: "KM" },
{ in: "9,234,524.2 KM", dist: 9234524.2, units: "KM" },
{ in: "9.234.524,2 KM", dist: 9234524.2, units: "KM" },
];
var successes = 0;
for ( var i = 0; i < results.length; i++ ){
var v = getDistance( results[i].in );
if ( v.value == results[i].dist && v.units == results[i].units )
successes++
else
console.log( results[i].in, v.value, v.units );
}
console.log( "Successes:", successes, "Failures:", results.length - successes );
var结果=[
{单位:“0米”,距离:0,单位:“米”},
{单位:“10米”,区:10,单位:“米”},
{单位:“0.2米”,距离:0.2,单位:“米”},
{单位:“0,2米”,距离:0.2,单位:“米”},
{单位:“1202米”,地区:1202,单位:“米”},
{在“1524.2公里”中,地区:1524.2,单位:“公里”},
{单位:“1.524,2公里”,地区:1524.2,单位:“公里”},
{单位:“9234524.2公里”,地区:9234524.2,单位:“公里”},
{在“9.234.524,2公里”中,地区:9234524.2,单位:“公里”},
];
var=0;
对于(var i=0;i
如果可以使用、
或
作为小数点,并且可以使用小数点,则可以使用类似的方法以{value:Number,units:String}
格式返回结构:
function getDistance( dist ){
var match = /^([+-]?[1-9]\d{0,2}(?:(?:([,.])(?:\d{3}\2)*\d{3}(?:(?!\2)[,.]\d+)?)|[,.]\d+)?|[+-]?0(?:[,.]\d+)?) (.+)$/
.exec( dist );
if ( match ){
return {
value: parseFloat( match[1].split( match[2] ).join( '' ).replace( ',', '.' ), 10 ),
units: match[3]
};
}
return { value: null, units: null };
}
测试:
var results = [
{ in: "0 m", dist: 0, units: "m" },
{ in: "10 m", dist: 10, units: "m" },
{ in: "0.2 m", dist: 0.2, units: "m" },
{ in: "0,2 m", dist: 0.2, units: "m" },
{ in: "1,202 m", dist: 1202, units: "m" },
{ in: "1,524.2 KM", dist: 1524.2, units: "KM" },
{ in: "1.524,2 KM", dist: 1524.2, units: "KM" },
{ in: "9,234,524.2 KM", dist: 9234524.2, units: "KM" },
{ in: "9.234.524,2 KM", dist: 9234524.2, units: "KM" },
];
var successes = 0;
for ( var i = 0; i < results.length; i++ ){
var v = getDistance( results[i].in );
if ( v.value == results[i].dist && v.units == results[i].units )
successes++
else
console.log( results[i].in, v.value, v.units );
}
console.log( "Successes:", successes, "Failures:", results.length - successes );
var结果=[
{单位:“0米”,距离:0,单位:“米”},
{单位:“10米”,区:10,单位:“米”},
{单位:“0.2米”,距离:0.2,单位:“米”},
{单位:“0,2米”,距离:0.2,单位:“米”},
{单位:“1202米”,地区:1202,单位:“米”},
{在“1524.2公里”中,地区:1524.2,单位:“公里”},
{单位:“1.524,2公里”,地区:1524.2,单位:“公里”},
{单位:“9234524.2公里”,地区:9234524.2,单位:“公里”},
{在“9.234.524,2公里”中,地区:9234524.2,单位:“公里”},
];
var=0;
对于(var i=0;i
当里程为1524.2公里时(使用,
作为小数点,作为小数点)或1.524,2公里时(使用
作为小数点,,
作为小数点)会发生什么?当里程为1524.2公里时会发生什么(使用,
作为小数点,
作为小数点)或1.524,2 KM
(使用
作为小数点,,
作为小数点)var text=“1234567890 KM”
输出1234
var text=“1234567890 KM”
输出1234