2016-07-14 1 views
0

Guten Morgen (in einigen Regionen :))Ace Editor findAll funktioniert nicht. Brauche alles Wort mit dif. Werte in Array

Der Versuch, herauszufinden, seit Tagen, aber immer noch nicht funktioniert. In diesem Code kann ich mit meinen Zeilen nur genau herausfinden wo der Cursor ist, das eine Wort im Text. Aber ich muss alles finden. Der Text ist EXW90 = und ein Wert. Die Werte sind unterschiedlich. Ich möchte alle Werte in einem Array portieren - funktioniert immer noch nicht. die Variable "zeile" gibt mir alle Zeilennummern wo START und ENDE - das funktioniert perfekt, aber in diesem START und ENDE muss ich ALLE EXW90 = Wert finden .. wer kann helfen? D ist nicht notwendig (nur als Information).

function handle_PulsTeilwert(read){ 
function getText(tag, startpos, bwards, srange, wrap) { 
    if (!wrap) wrap = false; 
    var Range = require('ace/range').Range; 
    var zeile = []; 
    editor.findAll('needle',{ 
     backwards: bwards, 
     wrap: wrap, 
     caseSensitive: false, 
     wholeWord: false, 
     regExp: false, 
     range: srange, 
     start: new Range (startpos.row, startpos.column, startpos.row, startpos.column) 
    }); 
    editor.$search.set({ needle: tag }); 
    zeile = editor.$search.find(editor.getSession()); 
    return zeile; 
} 
var Range = require('ace/range').Range; 
for (var D=1; D<=4; D++) { 
    var start = -1, end = -1; 
    var cursor = editor.getCursorPosition(); 
    start = getText('(start_#D'+D.toString()+'_geom)', cursor, true, null); 
    end = getText('(end_#D'+D.toString()+'_geom)', cursor, false, null); 
    if (start !== null && end !== null) 
     if (cursor.row < end.start.row && cursor.row > start.start.row) { 
      end.start.row = cursor.row; 
      break; 
     } 

} 
if (start === null || end === null) return; 
if (read){ 
    var sRange = new Range (start.start.row, 0, end.start.row, 0); 
    var needle = /EXW90=[0-9]\b|EXW90=[1-9][0-9]\b|EXW90=[1-9][0-9][0-9]\b|EXW90=[1-9][0-9][0-9][0-9]\b|EXW90=[1-8][0-9][0-9][0-9][0-9]\b|EXW90=90000\b/; 
    var teilPulsWert = getText(needle, cursor, true , sRange); //where is the last EXW90 value 
    alert(teilPulsWert[0]); //in this var the first array value, in[1] the next and so on... 

den wirklichen Text nur mit dem Wert erhalten verwendet i

teilPulsWert.start.column++; 
newTeilPulsWert = editor.session.getTextRange(teilPulsWert).replace('EXW90=', '') ; 

Dank für Ihre Hilfe!

Antwort

0

Ich habe ein Ideo, es zu tun, es funktioniert perfekt

mit

var contentINcnc = ace.edit("editor"); //read all content in editor 
var getContentINcncData = (contentINcnc.getSession().getValue()).split('EXW90=') ; //find all EXW90 an write it in an Array 
getContentINcncData[1] = parseFloat(getContentINcncData[1].match(/\d+\.?\d*/gi)[0]); //read out only the values, found in "EXW90=". 

diese perfekt läuft. Ich habe alle Werte von EXW90 im Editor hier in meinem Array gefunden.

PERFEKT für mich!