• 締切済み

画面から文字列を取得してその文字列の位置を知る方法

こんばんは。 質問させてください。 画面から文字列を選択して、取得します。(これは出来ました。) その文字列がHTMLソースファイルの どの位置のものか取得する方法はありますでしょうか? ○番目の「こんばんは」を画面から取得した時に 同じ文字列があっても、○番目の位置が取得出来る方法なのですが・・・ ---- <HTML><HEAD></HEAD> <BODY> おはよう、こんばんは。 さようなら、ありがとう。 しつれいしました、おはよう、こんばんは。 こんばんは、さようなら。 さようなら </BODY> </HTML> ----

みんなの回答

  • issa_srv
  • ベストアンサー率44% (40/89)
回答No.1

やりたいことが良くわかっていませんが、 文字列の開始位置を取りたいだけであれば、 splitで切り離した後にそれぞれの文字数と 対象の文字数を足していけば良いだけではないでしょうか? var text = "おはよう、こんばんは。さようなら、ありがとう。しつれいしました、おはよう、こんばんは。こんばんは、さようなら。さようなら"; var target = "こんばんは"; var index = text.split(target); var strCount = 0; for (var i=0; index.length-1 > i; i++) { alert(index[i].length + strCount); strCount += target.length; strCount += index[i].length; } ■結果の例 5 37 43

liorzil
質問者

お礼

選択した文字列の位置の取得方法わかりました。 (issa_srvさんへのお礼の場所ですが申し訳ないです。) ~~~ //選択範囲の取得 Rng = document.selection.createRange(); //BODYタグの全テキスト取得 Pos = document.body.createTextRange(); //Rngの選択範囲の終了位置から開始位置を //Posの終了位置に設定 Pos.setEndPoint("EndToStart",Rng); //Posの文字列の長さを求めると //Rngの開始位置がPosの終了位置になっているので、 //Rngの開始位置がわかる alert(Pos.text.length); ~~~ 参考URL: http://chaichan.web.infoseek.co.jp/qa4500/qa4552.htm

liorzil
質問者

補足

issa_srvさん、ご回答ありがとうざいます。 ちょっとサーバー室に軟禁されておりましてお返事遅れました。 申し訳ないです。 サンプルありがとうございます。 私の方でもサンプルを元に作成してみました。 結果は5,37,42となりました。 (多分、目視で数えると42なので正しいと思っています・・・) --- function hoge() {  var text = "おはよう、こんばんは。さようなら、ありがとう。しつれいしました、おはよう、こんばんは。こんばんは、さようなら。さようなら";  var target = "こんばんは";  var index = text.split(target);  var strCount = 0;  for (var i=0; index[i].length-1 > i; i++) {   alert("i=" + i);   alert(index[i].length + strCount);   alert(strCount += target.length);   alert(strCount += index[i].length);  } } --- そして、私の説明が悪かったのですが、 やりたいことは、以下の流れの2)番です。 --- 1)ブラウザから文字列を範囲指定する。 2)その範囲指定した文字列のみの文字開始位置を取得。  例えば、  ・HTMLソースの一番左上を0バイトとした時、○バイト目等・・・。  ・BODYタグで囲われた文字列の○バイト目等・・・。  (文字長は文字列から求められると考えております。) 3)CGI側へ文字列開始位置、文字長を渡し、データとして保存。 4)次回同じ画面を出力する時に保存した開始位置、文字長より、  Bタグなどで強調表示させたい。 --- 目的としましては、4)番目でタグを挿入する位置を特定させたいのです。 開始位置、文字長がわかれば<B>、</B>の挿入位置はわかると思っております。

関連するQ&A

  • ポイント位置の文字列取得について

     皆様、ご教授を宜しくお願い申し上げます。(自力では解決できませんでした。)  1)あるソフト画面の、例1の右端の数字 88.6(5位)から91.4(1位) の()を除いた、88.6から91.4 までの16ヶの数字を一括して、csvファイルで保存したいのですが、フリーソフトの「ポイント位置の文字列取得」では、一つづつしかできません。この縦に並んだ16ヶの数字を一括して、csvファイルで保存する方法をご教授宜しくお願い申し上げます。    (目標を達成できるのなら、「ポイント位置の文字列取得」以外のソフトでも構いません。また、有料無料は問いません。そのソフト名と一括保存方法をお教え下さい)

  • 文字列置換方法

    いつもお世話になっております。 早速質問なんですが、 ページの読み込み先によってページの文字を変更したいのですがよい方法は ないでしょうか? 例) <test10.html> <HTML> <head> </head> <body> <form name="main"> <a href="test11.html">移動1</a> </form> <a href="test12.html">ログインします</a> </body> </HTML> <test11.html> <HTML> <head> </head> <body> <form name="before"> 登録前です。 </form> </body> </HTML> <test12.html> <HTML> <head> </head> <body> <form name="after"> 登録後です。 </form> <a href="test10.html">トップに戻ります。</a> </body> </HTML> test12.htmlのページからtest.html10に戻った場合、 <a href="test11.html">移動1</a>を<a href="test13.html">移動2</a> <a href="test12.html">ログインします</a>を<a href="test14.html">ログアウトします。 と別の文字列に置換したいのですが可能でしょうか? 何かよい方法があればご教授願います。 javascriptでよい方法があれば幸いです。 よろしくお願いいたします。

  • HTML内から画面で選択した文字列のIDを取得する方法

    こんばんは。 質問させて下さい。 例えば以下のようなHTMLを出力し、 なんらかのタグでNAMEを付けておきます。 ---<HTMLファイルここから       : <XXX NAME="ID001"></XXX>ようこそJavaScriptへ。 <XXX NAME="ID002"></XXX>うまく表示されているでしょうか? <XXX NAME="ID003"></XXX>たまたま表示されているだけでしょうか?       : <XXX NAME="IDnnn"></XXX>これはテスト文字列です。       : ---<HTMLファイルここまで この時に、「たまたま表示されている」をマウスで範囲選択し、 document.selection.createRange().textや window.getSelection().toStringなどで文字列を取得して、 XXXタグのNAMEよりID003を拾うには どういったやり方があるでしょうか?

  • ウェブブラウザに直接に表示するには?

    (VB6) テキストボックスにHtmlのソース文字列が入っています。これをWebBrowserコントロールに表示するにはどうすればいいでしょうか? 例えば、テキストボックスに <html> <head> aaa </head> <body> bbb </body> </html> という文字列が入っているときに、WebBrowserにこのHtmlを表示させるにはどうすればいいでしょうか? htmlファイルを読み込んで表示させる方法は分かったのですが、htmlのソースの文字列を直接に表示する方法が分かりませんでした。 そもそも、こんなことが出来るのかどうかもわかりませんが、よろしくお願いいたします。

  • 特定の文字列を挿入

    テーブルのセルに特定の文字列を挿入する方法は御座いませんか? 例えば、 HTMLファイル <html> <head> </head> <body> <table> <tr><td> (1) </td><td> (2) </td></tr> <tr><td> (3) </td><td> (4) </td></tr> </table> </body> </html> とあった場合 JavaScriptファルには (1)に挿入する内容 (2)に挿入する内容 (3)に挿入する内容 (4)に挿入する内容 を書いてHTMLファイルに書き出しをしたいのです。 document.write('');を使って書き出す方法は知っていますが、指定した場所に貼り付けたい場合複数ファイルが必要になりますよね? それでは不便なので、JavaScriptファルは外部化で1つのファイルにし、指定箇所に文字列を挿入する方法を教えてください。 printを使えばいいんでしょうか?

  • エクセルの文字列検索で何番目の$の位置?

    たとえば、$A$1:$AG$25とか$AB$100:$AG$2550という文字列から、 1.文字列末尾の数値を取得する関数はあるでしょうか? 2.3番目の$の位置、4番目の$の位置を取得できる関数はあるでしょうか?

  • 文字列中の任意の位置の文字取得

    VB6の勉強をしております。 OSはWindowsXPです。 すごく簡単な質問なんですが、C言語のように、文字列中の任意の位置を指定する方法はVB6には無いのでしょうか? 例) C言語:str[1] 添え字で指定出来る VB6:???  思いつく方法はMidを利用し、任意の位置の文字を取得する方法なんですが、それしか無いのでしょうか? 以上、よろしくお願いいたします。

  • bashスクリプトでの文字列から特定文字列の位置特定

    bashスクリプトで 文字列から特定の文字の位置を取得する場合 expr index 文字列 特定したい文字 のように書きますが、aaa_atestという文字列から "atest"という文字列の開始位置を取得する ことはできません 何か方法はないのでしょうか

  • セレクトボックスの幅を指定した状態で、選択肢の文字列を全て表示する方法

    お世話になっております。 環境: Windows2000 IE6.0 HTMLでセレクトボックス(SELECTタグ)を使用しているのですが、選択肢(OPTIONタグ)の文字列が長いと、セレクトボックスの幅も長くなってしまいます。 STYLESHEETでWIDTHを指定してみたのですが、選択肢の文字列が途中で切り取られてしまい、使えません。 セレクトボックスの幅を指定し、プルダウンで表示される選択肢の文字列は全て表示されるような方法があれば教えて下さい。 ■ソース■ <html> <head> <STYLE TYPE="text/css"> <!-- SELECT { width: 100px; } --> </STYLE> <title>サンプル</title> </head> <body> <select name="" selected> <option name="0">選択肢1</option> <option name="0">長い文字列XXXXXXXXXXXXXXXXXXXXXXX</option> <option name="0">選択肢3</option> <option name="0">選択肢4</option> </select> </body>

    • ベストアンサー
    • HTML
  • ウィンドウ上の描画文字列の取得

    他アプリケーション画面上の文字列を取得したく、調べています。 スクロールつきテキストエリア風なのですが、「描画」されているのか GetWindowTextやWM_GETTEXTで取れるのは "output window"。 ソフトをいくつか試したところ、だいたい同様だったのですが NNScanTextのスキャンモードで画面上の文字列を取得できました。 再描画で、描画文字列&位置を取得しているとのこと・・・ ウィンドウまわりの知識がないなりに、GDIなど思いつく限り調べて みたのですが、その方法にたどりつけません。 教えていただけないでしょうか;; > NNScanText http://www.vector.co.jp/soft/winnt/util/se271444.html

専門家に質問してみよう