Javascript ACE编辑器查找文本,选择行并替换文本
在中,我想查找文本,选择行并替换该文本。我可以找到文本(使用自己的标签来找到它们),它正在工作。我还可以使用以下代码获取行(行)号:Javascript ACE编辑器查找文本,选择行并替换文本,javascript,ace-editor,Javascript,Ace Editor,在中,我想查找文本,选择行并替换该文本。我可以找到文本(使用自己的标签来找到它们),它正在工作。我还可以使用以下代码获取行(行)号: editor.find('needle',{ backwards: true, wrap: true, caseSensitive: true, range: null, wholeWord: true, regExp: false }) editor.$search.set({ needle: /(sta
editor.find('needle',{
backwards: true,
wrap: true,
caseSensitive: true,
range: null,
wholeWord: true,
regExp: false
})
editor.$search.set({
needle: /(start_#D1_SavePos)/
});
var found = editor.$search.find(editor.getSession()),
Range = require('ace/range').Range,
// find tagname "start_#D1_SavePos" in editor
mine = new Range(found.start.row+1, found.start.column-1, found.end.row+1, found.end.column),
// read the line number
D1SavePos = (editor.session.getTextRange(mine)),
// get next line number, after "start_#D1_SavePos"
// I need only this and in the editor it will be R13=0
rowOfD1SavePos = (mine+1),
// Rewrite R13 with value from input text
// get Value from input field
newD1SavePos = document.getElementById("highestBTTXT").value,
//Replace Zero-Value from R13 to new value
D1SavePos = D1SavePos.replace(/R13=0/, "R13=" + newD1SavePos);
// Now set this to editors row
尝试使用进行行选择,因为在“RowOfD1保存位置”中存储了读取行号:
editor.selection.moveCursorToPosition(rowOfD1SavePos);
但它不起作用。如果可以,我想用值“D1SavePos”替换此行
更新25.10.14
这是我完美的工作解决方案:
editor.find('needle',{
backwards: true,
wrap: true,
caseSensitive: true,
range: null,
wholeWord: true,
regExp: false
});
editor.$search.set({ needle: /(start_#D1_SavePos)/ });
var found = editor.$search.find(editor.getSession()),
Range = require('ace/range').Range,
// Find Coordinates, after Line "start_#D1_SavePos"
row = new Range(found.start.row+1, found.start.column-1, found.end.row+1, found.end.column),
// read Text in row
D1SavePos = (editor.session.getTextRange(row)),
// rewrite
// get value from input field
newD1SavePos = document.getElementById("highestBTTXT").value;
// rewrite R-Parameter with input value
D1SavePos = D1SavePos.replace(/R13=0/, "R13=" + newD1SavePos);
// write in editor
// mark line
editor.selection.moveCursorToPosition({row: row, column: 0});
// write
editor.session.replace(new Range(row, 0, row, Number.MAX_VALUE), D1SavePos);
moveCursorToPosition
的位置是一个类似行和列的对象
editor.selection.moveCursorToPosition({row:row,column:0})代码>
要替换文本,请像这样使用编辑器.session.replace(范围,文本)
var range = editor.find('needle',{
wrap: true,
caseSensitive: true,
wholeWord: true,
regExp: false,
preventScroll: true // do not change selection
})
range.start.column = 0
range.end.column = Number.MAX_VALUE
editor.session.replace(range, "x" + editor.session.getLine(range.start.row) + "x")
editor.selection.setRange(range)
注意:在您的示例中,
mine+1
是一个字符串,您可以很容易地看到为什么editor.selection.moveCursorToPosition(rowOfD1SavePos)如果您使用浏览器devtools查看该函数源代码,则“代码>不起作用”我在react中使用ace,这是我如何替换文本的代码片段
const text = 'Text replacement';
const editor = this.ace.editor;
const selectedContent = editor.getSelectedText();
const range = editor.selection.getRange();
editor.session.replace(range, text);
我(在你的帮助下)就是这样做的(见更新的问题)