Javascript 将距离字符串转换为数字

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()替换

当使用GoogleAPI计算两个位置之间的距离时,它以字符串格式返回距离

例如:1585公里、54公里等


我想把它转换成一个数字。将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