0

こんにちは私はいくつかの問題があります:

  1. 与えられた選択された単語の前後の単語が選択された単語を囲む20語のみを制限している場合、選択された単語の周りの単語を取得するにはどうすればよいですか?
  2. 段落内の単語が同じ単語である場合に正しい位置を取得する方法。たとえば、次のような文があります。foo laa foo doo次に、laadooの間に位置する単語「foo」を選択します。
  3. 別の段落から単語を取得する方法は?


    例:
    p1:私は赤いシャツが好きです
    p2:母は赤いシャツが好きではありませんでした


    私が選んだ言葉は「お母さん」で、「お母さん」という言葉の周りに「赤いドレスが好き」「赤いシャツが嫌い」の10語を使わなければなりません。

注: 質問2はnextSiblingとpreviousSiblingを使用できますか?

これは私が試した私のコードです:

<html>
<head>
<script type="text/javascript">
function getElements(){
  var x = document.getElementsByTagName("body");
  x = x[0].innerHTML;

  x = x.replace(/&(lt|gt);/g, function (strMatch, p1){
            return (p1 == "lt")? "<" : ">";});
  var str  = x.replace(/<\/?[^>]+(>|$)/g, "");



  var emailPattern = /[_a-zA-Z0-9\.]+@[\.a-zA-Z0-9]+\.[a-zA-Z]+/gi;
  var urlPattern = /[a-z]+:\/\/[^\s]+/gi;
  var numberOrSymbolPattern = /[0-9\.,!@#\$%\^\&*\(\)`~_\-=\+|\\{}\[\]\s:;<>\?\/]+/gi;

  //////alert(str);

  var str  = str.replace(emailPattern , " ");
  var str  = str.replace(urlPattern , " ");
  var str  = str.replace(numberOrSymbolPattern , " ");
  //////alert(str);
  var str  = str.replace(/[\n\f\r\t]/g, " ");

   var hilangtandabaca = str.replace(/[.!:;'",?]/g," ");

   var kataptg = hilangtandabaca;
   //alert(kataptg);
   var kata = new Array();
    kata[0] = " is ";
    kata[1] = " the ";
    kata[3] = " of ";
    kata[4] = " a ";
    kata[5] = " or ";
    kata[6] = " for ";
    kata[7] = " from ";
    kata[8] = " in ";
    kata[9] = " this ";
    kata[10] = " and ";
    kata[11] = " on ";
    kata[12] = " with ";
    kata[13] = " my ";

 for(var i=0,regex; i<kata.length; i++){
        var regex = new RegExp(kata[i],"gi");
        kataptg = kataptg.replace(regex," ");
    }

   var select = getSelected()+ "";
   alert(select);
   var index = kataptg.indexOf(select);
   //alert("indeks select text:" + index);
   if (index >= 0) {
    var strBefore = "";
    var strAfter = "";
    //var strOri ="";
    //if (index = -1)
    //strOri = kataptg.substr(index);
    //alert(strOri);
    if (index > 0)
    strBefore = kataptg.substr(0, index);
    //alert(strBefore);
    if (index < kataptg.length - 1)
    strAfter = kataptg.substr(index + select.length, kataptg.length - (index + select.length));
    //alert(strAfter);
    alert("Before: " + strBefore + "\nAfter: " + strAfter);
   }

}


function getSelected() {
   var userSelection;
   if (window.getSelection) {
      userSelection = window.getSelection();
   } else if (document.selection) {
       userSelection = document.selection.createRange();
   }
   return userSelection;
}


</script>
</head>                        
<body>
<h2>About</h2>
<p> my email : a@a.a
<p> my url http://id.wikipedia.org/wiki/URL
<p> my telepon number = 081330782
<p>okey In agriculture, the harvest is the process of gathering mature crops from the fields. Reaping is the cutting of grain or pulse for harvest, typically using a scythe, sickle, or reaper.[1] The harvest marks the end of the growing season, or the growing cycle for a particular crop, and this is the focus of seasonal celebrations of on many religions. On smaller farms with minimal mechanization, harvesting is the most labor-intensive activity of the growing season great yeah. !:;'",?</p>

<p>
<input type="button" onclick="getElements()" value="ambil select text" />
</p>

</body>
</html>
4

1 に答える 1

1

これはJavaScriptinnerHTMLsplit()メソッドの完璧な例です。pすべての要素のコンテンツをループできます。最初の段落で検索する例を次に示します。

contentArray = document.getElementByTagName('p')[0].innerHTML.split(' ')

split(' ')要素のコンテンツをスペースで区切って配列に分割します。innerHTML自明です。

今、あなたの言葉を見つけるために。indexOf()この場合のあなたの友達は:

foodex = contentArray.indexOf('foo');
alert('The first occurrence of the string \'foo\' in the text is at word number ' + foodex);

最後に、周囲の単語を取得するには、配列で遊んでください(文字列の出現が段落の開始または終了に近い場合、つまり10単語未満の場合、これは機能しません。

alert('I am the 10th word after \'foo\'' + contentArray[foodex + 10 - 1]);

頑張ってください(このコードが箱から出してすぐに機能するという保証はありません)!

于 2010-12-05T04:38:54.260 に答える