需要JAVASCRIPT或JAVA解决方案
我正在寻找的解决方案可以使用java或javascript。我在字符串中有html代码,所以我可以在使用java之前或之后使用javascript来操作它。
的问题 的
无论如何,我必须用标签包装每个单词。例如:
<html> ... >
Hello every one, cheers
< ... </html>
应改为
<html> ... >
<word>Hello</word> <word>every</word> <word>one</word>, <word>cheers</word>
< ... </html>
为什么吗
这将帮助我使用javascript选择/突出显示一个单词。似乎唯一的方法是使用我在 JAVASCRIPT提示中添加的函数highlightElementAtPoint:它只是找到某个x,y坐标的元素并突出显示它。我认为如果每个单词都是一个元素,它就是可行的。
这个想法是使用这种方法允许我们检测android WebView中突出显示的文本,即使这意味着使用扭曲突出显示方法。多想一想,您会发现许多其他应用程序。
JAVASCRIPT提示
我使用以下代码突出显示一个单词;但是,这将突出显示属于某个标签的整个文本。当每个单词都是一个标签时,这将在某种程度上起作用。如果有替代品可以让我在某个位置突出显示单词,那么它也是一个解决方案。
function highlightElementAtPoint(xOrdinate, yOrdinate) {
var theElement = document.elementFromPoint(xOrdinate, yOrdinate);
selectedElement = theElement;
theElement.style.backgroundColor = "yellow";
var theName = theElement.nodeName;
var theArray = document.getElementsByTagName(theName);
var theIndex = -1;
for (i = 0; i < theArray.length; i++) {
if (theArray[i] == theElement) {
theIndex = i;
}
}
window.androidselection.selected(theElement.innerHTML);
return theName + " " + theIndex;
}
答案 0 :(得分:6)
尝试使用类似
的内容String yourStringHere = yourStringHere.replace(" ", "</word> <word>" )
yourStringHere.replace("<html></word>", "<html>" );//remove first closing word-tag
应该工作,也许你必须改变... ...
答案 1 :(得分:4)
var tags = document.body.innerText.match(/\w+/g);
for(var i=0;i<tags.length;i++){
tags[i] = '<word>' + tags[i] + '</word>';
}
或者@ThomasK说:
var tags = document.body.innerText;
tags = '<word>' + tags + '</word>';
tags = tags.replace(/\s/g,'</word><word>');
但你必须记住:.replace(" ",foo)
只替换一次空间。对于多次替换,您必须使用.replace(/\s+/g,foo)
正如@ ajax333221所说,第二种方式将包括逗号,点和其他符号,所以更好的解决方案是第一种
JSFiddle示例:http://jsfiddle.net/c6ftq/4/
答案 2 :(得分:2)
inputStr = inputStr.replaceAll("(?<!</?)\\w++(?!\\s*>)","<word>$0</word>");
答案 3 :(得分:2)
您可以尝试以下代码,
import java.util.StringTokenizer;
public class myTag
{
static String startWordTag = "<Word>";
static String endWordTag = "</Word>";
static String space = " ";
static String myText = "Hello how are you ";
public static void main ( String args[] )
{
StringTokenizer st = new StringTokenizer (myText," ");
StringBuffer sb = new StringBuffer();
while ( st.hasMoreTokens() )
{
sb.append(startWordTag);
sb.append(st.nextToken());
sb.append(endWordTag);
sb.append(space);
}
System.out.println ( "Result:" + sb.toString() );
}
}