有没有办法将插入符号位置作为源代码字符串中的索引? 我知道我可以得到这个位置,它会给我一个包含行和列的对象,但有没有办法获取或转换line + column到string char index?
例如,如果我有:
using System;
using System.Data;
我将插入符号放在" .Data"之前,我知道如何获取行+ col坐标(第1行,第13列),但是如何获取char数组索引(应该有点像25)?
答案 0 :(得分:1)
好的,不确定这是否是最好的方式,但以下似乎可以正常工作:
以下是一个示例代码:
var line = window.editor.getPosition().lineNumber;
var col = window.editor.getPosition().column;
var textUntilPosition = window.editor.model.getValueInRange({ startLineNumber: 1, startColumn: 1, endLineNumber: line, endColumn: col });
var currentPos = textUntilPosition.length;
答案 1 :(得分:1)
您可以使用Monaco Playground中的以下示例代码进行尝试。
您正在寻找的功能是ITextModel' getOffsetAt(IPosition)功能。
var model = monaco.editor.createModel(
"using System;\n" +
"using System.Data;",
"csharp"
);
var editor = monaco.editor.create(document.getElementById("container"), {
model
});
var offset = model.getOffsetAt({ lineNumber: 2, column: 13 });
alert(offset);