2017-09-08 3 views
1

J'aime extraire les coordonnées de ce texte:parse les coordonnées du texte

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 

Je l'ai essayé, mais il n'a pas bien fonctionné: https://jsfiddle.net/pnyqrgfz/ Le résultat devrait ressembler à ceci:

30.123456,21.123456 
11.146724,27.427684 
24.142451,36.127474 
26.241442,16.323624 
47.139682,14.124675 
+0

Quel est le résultat attendu? – marvel308

+0

@ axi92 vérifier la réponse cela fonctionne exactement comme vous avez besoin –

Répondre

0

vous pouvez le faire:

function parse() 
 
{ 
 
\t var lines = $("#textarea_input").val().split('\n'); 
 
\t var coords = []; 
 
\t for(var i = 0;i < lines.length;i++) 
 
\t { 
 
\t \t //code here using lines[i] which will give you each line 
 
    if(lines[i].indexOf('?ll=') !== -1){ 
 
    \t var lineArr = lines[i].split('?ll='); 
 
     if(lineArr.length!==0){ 
 
     var splitCords = lineArr[1].split(','); 
 
     coords.push(splitCords[0]); 
 
     coords.push(splitCords[1]); 
 
     } 
 
    } 
 
\t } 
 

 
\t for(var i = 0;i < coords.length;i++) 
 
\t { 
 
\t \t //console.log(coords); 
 
    var newLine = ''; 
 
    var comma = ',' 
 
\t if(i%2 !== 0){ 
 
    newLine='\n'; 
 
    comma = ''; 
 
    } 
 
    
 
    $('#textarea_output').val($('#textarea_output').val()+coords[i]+comma+newLine); 
 
\t } 
 
} 
 
parse();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
\t 
 
\t <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> 
 
\t <input type = "button" onclick = "parse();"/> 
 
\t <textarea id="textarea_output" rows="15" cols="55"></textarea>

Utilisez la fonction split() et cela fonctionne très bien.

+0

Merci, je viens de supprimer le '' split (',') '' et ça fonctionne bien =) https://jsfiddle.net/pnyqrgfz/2/ – axi92

+0

Je suis content de vous aider –

0

Vous pouvez utiliser les éléments suivants

function parse() 
 
{ 
 
\t var lines = $("#textarea_input").val().split('\n'); 
 
\t var coords = []; 
 
\t for(var i = 0;i < lines.length;i++) 
 
\t { 
 
\t \t //code here using lines[i] which will give you each line 
 
\t \t var m = lines[i].match(/\d{1,2}\.\d+,\d{1,2}\.\d+/); 
 
\t \t console.log(lines[i]); 
 
\t \t console.log('i:' + i + ' - ' + m); 
 
\t \t if (m != null) 
 
\t \t { 
 
\t \t \t coords.push(m); 
 
\t \t \t console.log(m); 
 
\t \t } 
 
\t } 
 

 
\t for(var i = 0;i < coords.length;i++) 
 
\t { 
 
\t \t //console.log(coords); 
 
\t \t $('#textarea_output').val($('#textarea_output').val()+coords[i]+'\n'); 
 
\t } 
 
}
<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> 
 
\t <input type = "button" onclick = "parse();"/> 
 
\t <textarea id="textarea_output" rows="15" cols="55"></textarea>

1

Qu'en est cette courte solution:

var source = 'https://www.seite.com/map?ll=30.123456,21.123456'; 
var pattern = /[0-9]+\.[0-9]+/g; 
source.match(pattern); 

Sortie:

["30.123456", "21.123456"] 

exemple RegEx avec l'entrée complète et longue:

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