从文本中解析坐标
parse coordinates from text
我喜欢从这个文本中提取坐标:
Text
492k | 505k auf Punkt
https://www.seite.com/map?ll=30.123456,21.123456
Text
83k | 1,8 Mio auf Punkt
https://www.seite.com/map?ll=11.146724,27.427684
Text
82k | 121k auf Punkt
https://www.seite.com/map?ll=24.142451,36.127474
Text
20k | 65k auf Punkt
https://www.seite.com/map?ll=26.241442,16.323624
Text
11k | 93 auf Punkt
https://www.seite.com/map?ll=47.139682,14.124675
我试过了,但效果不佳:https://jsfiddle.net/pnyqrgfz/
结果应该是这样的:
30.123456,21.123456
11.146724,27.427684
24.142451,36.127474
26.241442,16.323624
47.139682,14.124675
你可以这样做:
function parse ()
{
var lines = $("#textarea_input").val().split('\n');
var coords = [];
for(var i = 0;i < lines.length;i++)
{
//code here using lines[i] which will give you each line
if(lines[i].indexOf('?ll=') !== -1){
var lineArr = lines[i].split('?ll=');
if(lineArr.length!==0){
var splitCords = lineArr[1].split(',');
coords.push(splitCords[0]);
coords.push(splitCords[1]);
}
}
}
for(var i = 0;i < coords.length;i++)
{
//console.log(coords);
var newLine = '';
var comma = ','
if(i%2 !== 0){
newLine='\n';
comma = '';
}
$('#textarea_output').val($('#textarea_output').val()+coords[i]+comma+newLine);
}
}
parse();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<textarea id="textarea_input" rows="15" cols="55">Text
492k | 505k auf Punkt
https://www.seite.com/map?ll=30.123456,21.123456
Text
83k | 1,8 Mio auf Punkt
https://www.seite.com/map?ll=11.146724,27.427684
Text
82k | 121k auf Punkt
https://www.seite.com/map?ll=24.142451,36.127474
Text
20k | 65k auf Punkt
https://www.seite.com/map?ll=26.241442,16.323624
Text
11k | 93 auf Punkt
https://www.seite.com/map?ll=47.139682,14.124675</textarea>
<input type = "button" onclick = "parse();"/>
<textarea id="textarea_output" rows="15" cols="55"></textarea>
利用 split()
功能,效果很好。
您可以使用以下
function parse ()
{
var lines = $("#textarea_input").val().split('\n');
var coords = [];
for(var i = 0;i < lines.length;i++)
{
//code here using lines[i] which will give you each line
var m = lines[i].match(/\d{1,2}\.\d+,\d{1,2}\.\d+/);
console.log(lines[i]);
console.log('i:' + i + ' - ' + m);
if (m != null)
{
coords.push(m);
console.log(m);
}
}
for(var i = 0;i < coords.length;i++)
{
//console.log(coords);
$('#textarea_output').val($('#textarea_output').val()+coords[i]+'\n');
}
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<textarea id="textarea_input" rows="15" cols="55">Text
492k | 505k auf Punkt
https://www.seite.com/map?ll=30.123456,21.123456
Text
83k | 1,8 Mio auf Punkt
https://www.seite.com/map?ll=11.146724,27.427684
Text
82k | 121k auf Punkt
https://www.seite.com/map?ll=24.142451,36.127474
Text
20k | 65k auf Punkt
https://www.seite.com/map?ll=26.241442,16.323624
Text
11k | 93 auf Punkt
https://www.seite.com/map?ll=47.139682,14.124675</textarea>
<input type = "button" onclick = "parse();"/>
<textarea id="textarea_output" rows="15" cols="55"></textarea>
这个简短的解决方案怎么样:
var source = 'https://www.seite.com/map?ll=30.123456,21.123456';
var pattern = /[0-9]+\.[0-9]+/g;
source.match(pattern);
输出:
["30.123456", "21.123456"]
具有完整和长输入的 RegEx 示例:
我喜欢从这个文本中提取坐标:
Text
492k | 505k auf Punkt
https://www.seite.com/map?ll=30.123456,21.123456
Text
83k | 1,8 Mio auf Punkt
https://www.seite.com/map?ll=11.146724,27.427684
Text
82k | 121k auf Punkt
https://www.seite.com/map?ll=24.142451,36.127474
Text
20k | 65k auf Punkt
https://www.seite.com/map?ll=26.241442,16.323624
Text
11k | 93 auf Punkt
https://www.seite.com/map?ll=47.139682,14.124675
我试过了,但效果不佳:https://jsfiddle.net/pnyqrgfz/ 结果应该是这样的:
30.123456,21.123456
11.146724,27.427684
24.142451,36.127474
26.241442,16.323624
47.139682,14.124675
你可以这样做:
function parse ()
{
var lines = $("#textarea_input").val().split('\n');
var coords = [];
for(var i = 0;i < lines.length;i++)
{
//code here using lines[i] which will give you each line
if(lines[i].indexOf('?ll=') !== -1){
var lineArr = lines[i].split('?ll=');
if(lineArr.length!==0){
var splitCords = lineArr[1].split(',');
coords.push(splitCords[0]);
coords.push(splitCords[1]);
}
}
}
for(var i = 0;i < coords.length;i++)
{
//console.log(coords);
var newLine = '';
var comma = ','
if(i%2 !== 0){
newLine='\n';
comma = '';
}
$('#textarea_output').val($('#textarea_output').val()+coords[i]+comma+newLine);
}
}
parse();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<textarea id="textarea_input" rows="15" cols="55">Text
492k | 505k auf Punkt
https://www.seite.com/map?ll=30.123456,21.123456
Text
83k | 1,8 Mio auf Punkt
https://www.seite.com/map?ll=11.146724,27.427684
Text
82k | 121k auf Punkt
https://www.seite.com/map?ll=24.142451,36.127474
Text
20k | 65k auf Punkt
https://www.seite.com/map?ll=26.241442,16.323624
Text
11k | 93 auf Punkt
https://www.seite.com/map?ll=47.139682,14.124675</textarea>
<input type = "button" onclick = "parse();"/>
<textarea id="textarea_output" rows="15" cols="55"></textarea>
利用 split()
功能,效果很好。
您可以使用以下
function parse ()
{
var lines = $("#textarea_input").val().split('\n');
var coords = [];
for(var i = 0;i < lines.length;i++)
{
//code here using lines[i] which will give you each line
var m = lines[i].match(/\d{1,2}\.\d+,\d{1,2}\.\d+/);
console.log(lines[i]);
console.log('i:' + i + ' - ' + m);
if (m != null)
{
coords.push(m);
console.log(m);
}
}
for(var i = 0;i < coords.length;i++)
{
//console.log(coords);
$('#textarea_output').val($('#textarea_output').val()+coords[i]+'\n');
}
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<textarea id="textarea_input" rows="15" cols="55">Text
492k | 505k auf Punkt
https://www.seite.com/map?ll=30.123456,21.123456
Text
83k | 1,8 Mio auf Punkt
https://www.seite.com/map?ll=11.146724,27.427684
Text
82k | 121k auf Punkt
https://www.seite.com/map?ll=24.142451,36.127474
Text
20k | 65k auf Punkt
https://www.seite.com/map?ll=26.241442,16.323624
Text
11k | 93 auf Punkt
https://www.seite.com/map?ll=47.139682,14.124675</textarea>
<input type = "button" onclick = "parse();"/>
<textarea id="textarea_output" rows="15" cols="55"></textarea>
这个简短的解决方案怎么样:
var source = 'https://www.seite.com/map?ll=30.123456,21.123456';
var pattern = /[0-9]+\.[0-9]+/g;
source.match(pattern);
输出:
["30.123456", "21.123456"]
具有完整和长输入的 RegEx 示例: