在特定点插入“lng”:到字符串中

时间:2014-05-25 18:13:18

标签: javascript regex

如何编写脚本来替换 {"lat":-32.1814184, -64.4201269}{"lat":-32.1814184, "lng":-64.4201269}。 从,找到第一次出现}并替换的表达式是什么。

我的代码如下:

我正在尝试用必需的替换字符串。我写了一个函数,但是

<script>
    function getActualData(){ 
        while(true){
            var textData=document.getElementById("tss").innerHTML;
            var repeats = textData.match(/}/g).length;
            if(repeats=0) { break;}
            dIndex = textData.indexOf("}");
            if(dIndex>0){
                var s=textData.substring(dIndex-11,dIndex);
                alert(s);
                document.getElementById("tss").innerHTML=textData.replace(s,",lng:"+s);
            }
                else
                break;
        }
    }
</script>


<div id="tss">
{"ID":xxx,"Name":xxx,"emailID":xxx@aol.com,"Address":Provincial 51, Cordoba,xx ,lat":-32.1814184, -64.4201269}, {"ID":xx,"HolderName":xx,"emailID":x@aol.com,"Address":Department - Cordoba 51, xx, "lat":-32.2714158, -64.6214281}
</div>
<script>getActualData();</script>

2 个答案:

答案 0 :(得分:0)

不是最令人愉快的解决方案,但这是python中的一个:

import re
string = '''{"ID":xxx,"Name":xxx,"emailID":xxx@aol.com,"Address":Provincial 51, Cordoba,xx ,"lat":-32.1814184, -64.4201269},{"ID":xx,"HolderName":xx,"emailID":x@aol.com,"Address":Department - Cordoba 51, xx, "lat":-12.2714158, -64.6214281} '''
group = re.findall(r'\"lat\":[-]*[0-9]+\.[0-9]+,\ [-]*[0-9]+\.[0-9]+',string)
for coordinate_pair in group:
     string = string.replace(coordinate_pair,coordinate_pair.replace(', ',', "lng":'))
  • group是每个坐标对的列表
  • 然后迭代,替换为“lng”注入
  • 然后将固定坐标对替换为字符串

答案 1 :(得分:0)

您可以使用replace,如下所示:

function getActualData(){
    var textData = document.getElementById("tss").innerHTML;
    var result = textData.replace(/"lat":[^,]+, /g, "$&\"lng\":");
    return result;
}

alert(getActualData());

JSFiddle

正则表达式的详细信息:

"lat":字面上匹配“lat”:`

[^,]+,匹配除逗号以外的所有字符,后跟逗号和空格。

对于替换,$&是匹配,\"lng\":会将"lng":添加到匹配项中。