1

我喜欢从这段文字中提取坐标:

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
4

3 回答 3

3

这个简短的解决方案怎么样:

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"]

具有完整和长输入的正则表达式示例:

https://regex101.com/r/5FXAW8/1

于 2017-09-08T08:18:18.023 回答
1

你可以这样做:

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()功能,它工作得很好。

于 2017-09-08T07:48:53.810 回答
1

您可以使用以下

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>

于 2017-09-08T07:50:12.293 回答