ace编辑器findAll无效。需要所有的单词与dif。数组

时间:2016-07-14 08:01:11

标签: javascript ace-editor

早上好(在某些地区:))

自从几天以来一直试着想出来,但仍然无法正常工作。在这段代码中,我可以找到我的行,只有Cursor的位置,Text中的一个Word。但我需要找到所有。文本是EXW90 =和值。价值观是不同的。我想在一个数组中移植所有值 - 仍然无法正常工作。 变量" zeile"给我所有的行号在哪里是开始和结束 - 这是有效的,但在这个开始和结束时我需要找到所有EXW90 =值.. 谁可以帮忙? D不是必需的(仅作为信息)。

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...

获取仅使用我使用的值的真实文本

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

感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

我有一个Ideo去做,它运作得很好

    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=".

这完美运行。我在我的数组中的编辑器中找到了EXW90的所有值。

对我来说很完美!

答案 1 :(得分:0)

对我来说这很有效: -

editor.findAll('needles',{
            wrap: true,
            caseSensitive: true, 
            wholeWord: true,
            regExp: false,
            // preventScroll: true // do not change selection
        })

var range = editor.getSelection()。getAllRanges();

然后,范围将包含所有出现的数组列表。