Javascript 如何在光标位置之前读取编辑器文本以匹配特定单词?
我试图检测光标何时在特定字符串之后立即移动到某处。。。我只能这样做,因为我有一个字符串,但当我有多个字符串时,我无法匹配。。。如果我有一个字符串,比如:“color:”,那么匹配单词的代码是:Javascript 如何在光标位置之前读取编辑器文本以匹配特定单词?,javascript,Javascript,我试图检测光标何时在特定字符串之后立即移动到某处。。。我只能这样做,因为我有一个字符串,但当我有多个字符串时,我无法匹配。。。如果我有一个字符串,比如:“color:”,那么匹配单词的代码是: <!-- Create a simple CodeMirror instance --> <link rel="stylesheet" href="lib/codemirror.css"> <script src="lib/codemirror.js"></scr
<!-- Create a simple CodeMirror instance -->
<link rel="stylesheet" href="lib/codemirror.css">
<script src="lib/codemirror.js"></script>
<textarea id="myTextarea"></textarea>
<script>
var editor = CodeMirror.fromTextArea(myTextarea, {
lineNumbers: true
});
//Catch cursor change event
editor.on('cursorActivity',function(e){
var line = e.doc.getCursor().line, //Cursor line
ch = e.doc.getCursor().ch, //Cursor character
stringToMatch = "color:",
n = stringToMatch.length,
stringToTest = e.doc.getLine(line).substr(Math.max(ch - n,0),n);
if (stringToTest == stringToMatch) console.log("SUCCESS!!!");
});
</script>
变量编辑器=CodeMirror.fromTextArea(myTextarea{
行号:对
});
//捕捉光标更改事件
编辑器.on('cursorActivity',函数(e){
var line=e.doc.getCursor().line,//光标行
ch=e.doc.getCursor().ch,//光标字符
stringToMatch=“颜色:”,
n=stringToMatch.length,
stringToTest=e.doc.getLine(line).substr(Math.max(ch-n,0),n);
if(stringToTest==stringToMatch)console.log(“SUCCESS!!!”);
});
但是当我有一个字符串数组,比如(var数组=[“一”,“三”,“五]),我想匹配这个数组中的任何单词,我就不能这样做。。。所以任何人都可以帮助我,我尝试了很多,但失败了
注意:上面的代码来自:您可以使用正则表达式来匹配以下几个单词中的一个:
var line = e.doc.getCursor().line, //Cursor line
ch = e.doc.getCursor().ch, //Cursor character
// Select all characters before cursor
stringToTest = e.doc.getLine(line).substr(0, ch),
// Array with search words: escape characters for use in regular expression:
array=["one","three","five"].map( s => s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&') );
// Join words with OR (|) and require they match just before the cursor
// (i.e. at end of string: $)
if (stringToTest.match(new RegExp('('+array.join('|')+')$'))) console.log("SUCCESS!!!");
以下是一个工作片段:
var editor=code镜像.fromTextArea(myTextarea{
行号:对
});
//捕捉光标更改事件
编辑器.on('cursorActivity',函数(e){
var line=e.doc.getCursor().line,//光标行
ch=e.doc.getCursor().ch,//光标字符
//选择光标前的所有字符
stringToTest=e.doc.getLine(line).substr(0,ch),
//带搜索词的数组:用于正则表达式的转义字符:
数组=[“一”、“三”、“五”]
.map(s=>s.replace(/[-\/\^$*+?。()|[\]{}]/g,\\$&');
//连接单词并要求它们在光标前匹配
//(即字符串末尾:$)
if(stringToTest.match(新的RegExp(“(“+array.join(“|”)+”)$))
console.log(“SUCCESS!!!”);
});代码>
谢谢你的帮助我想要的是@trincot