如何在Javascript中拆分String

时间:2015-11-17 08:13:51

标签: javascript split

我有一个字符串[{"Latitude":8.55701,"Longitude":76.880934},{"Latitude":8.55701,"Longitude":76.880935},{"Latitude":8.55701,"Longitude":76.880935}]

我希望输出为[{8.55701,76.880934},..etc]只有数字。

这是一个JSON字符串 -

<script type="text/javascript">
 var myVar = ' <%= request.getAttribute("Map") %>';    /* retrieve json from request attribute */
 var result = myVar.split(',',2);
 var latitude = parseFloat(result[0].replace('"Latitude":',''));
 var longitude = parseFloat(result[1].split(':'));
 alert(latitude);  
 </script>

我试过但没有得到它。

4 个答案:

答案 0 :(得分:2)

使用简单的正则表达式删除字符串:

.replace(/\"\w+\":/g, '');

'[{"Latitude":8.55701,"Longitude":76.880934},{"Latitude":8.55701,"Longitude":76.880935},{"Latitude":8.55701,"Longitude":76.880935}]'.replace(/\"\w+\":/g, '');

如果您想获取值,可以使用JSON.parse:

var coords = JSON.parse('[{"Latitude":8.55701,"Longitude":76.880934},{"Latitude":8.55701,"Longitude":76.880935},{"Latitude":8.55701,"Longitude":76.880935}]');

// And loop
coords.forEach(function(coord) {
  console.log('latitude', coord.Latitude);
  console.log('longitude', coord.Longitude);
});

答案 1 :(得分:1)

试试这个,这个函数将返回一个你预期的字符串。

function pareseJSONStr(str){

    var json = JSON.parse(str);
    var rslt = [];
    json.forEach(function(obj){
        rslt.push("{" + obj.Latitude + ", " + obj.Longitude + "}");
    });
    return "[" + rslt.join(",") + "]"
}

将此功能称为

var mystr = '[{"Latitude":8.55701,"Longitude":76.880934},{"Latitude":8.55701,"Longitude":76.880935},{"Latitude":8.55701,"Longitude":76.880935}]';
pareseStr(mystr);

返回一个字符串

"[{8.55701, 76.880934},{8.55701, 76.880935},{8.55701, 76.880935}]"

答案 2 :(得分:0)

如果您真的想要您的奇怪数据格式,请使用它:

var convertStrange = function( string ) {
    return '[' + JSON.parse( string ).map( function( item ) {
        return '{' + [ item.Latitude, item.Longitude ].join( ',' ) + '}';
    } ).join( ',' ) + ']';
};

所以,

convertStrange('[{"Latitude":8.55701,"Longitude":76.880934},{"Latitude":8.55701,"Longitude":76.880935},{"Latitude":8.55701,"Longitude":76.880935}]')

将返回字符串

[{8.55701,76.880934},{8.55701,76.880935},{8.55701,76.880935}]

答案 3 :(得分:0)

{8.55701,76.880934} 

是错误的对象构造。对象必须是名称:值对,因此它只能是

{name1:8.55701, name2:76.880934}

或者您可以使用像

这样的数组
[[8.55701, 76.880934], ... ]

如果你想把它作为一个字符串使用它;

var string = '[{"Latitude":8.55701,"Longitude":76.880934}, {"Latitude":8.55701,"Longitude":76.880935}, {"Latitude":8.55701,"Longitude":76.880935}]';
var newString = string.replace(/\"Latitude\":|\"Longitude\":/g, "");