使用ace.js查找随机元素

时间:2014-06-11 13:20:53

标签: javascript regex ace-editor

如何在粘贴到ace.js编辑器中的某些代码中找到一些随机元素? 例如:

editor.find("<[a-z]+>",{regExp:true});

在像这样的XML代码上,语句只会找到第一个元素

<root>
   <element1></element1>
   <element2></element2>
   <element3></element3>
</root>

如何找到随机元素?例如element1,2或3 ...

BTW:ace.js提供了一种查找所有这些元素的方法。

谢谢!

1 个答案:

答案 0 :(得分:0)

你可以找到所有范围并随机选择其中一个

editor.$search.setOptions({needle: "<[a-z]+", regExp:true, preventScroll: true});
ranges = editor.$search.findAll(editor.session)
randomRange = ranges[Math.floor(Math.random() * ranges.length)]
if (randomRange)
    editor.selection.setRange(randomRange)

或随机选择起始位置

i = Math.floor(Math.random() * editor.getValue().length)
startPos = editor.session.doc.indexToPosition(i)
editor.find("<[a-z]+",{regExp:true, start: startPos})

更新:第二种方法并不好,因为它的分布不均匀