<文字列の置き換え、Replace関数を使用>
こんにちは、Ken3です。
今回は、
文字列を置換える関数、
Replace関数を使ってみます。
たいした話じゃないので、あまり期待しないでね。
/*
 * 1.Replace関数のテスト
*/
文字列を置換する関数で、
Replace関数
ってのがあるらしい。
へぇ〜、そうなんだ。
チョット試してみよう。
-- test021-1.asp
<%@LANGUAGE=VBScript%>
<html>
<head>
<title>文字列の置き換え、Replace関数を使用</title>
</head>
<body>
<h2>文字列の置き換え、Replace関数を使用</h2>
test021-1.asp<br>
動作仕様:<br>
よくある文字列の置き換え処理です<br>
書き方は簡単で、<br>
変換後 = Replace(元の文字列, 変換したい単語, 置換える単語)<br>
です。<br>
  moji = "こんな三流プログラム見たこと無いよ"<br>
  moji = Replace(moji, "三流", "キタナイ")  '三流をキタナイに置換え<br>
↓結果は、<br>
<%
  dim moji
  moji = "こんな三流プログラム見たこと無いよ"
  moji = Replace(moji, "三流", "キタナイ")  '三流をキタナイに置換え
  Response.Write moji & "<BR>"
%>
↑うまくいったかなぁ?<br>
<hr>
<% Call OUT_SRC() 'ソースの表示関数を呼ぶ %>
</body>
</html>
---
使い方は簡単で、
  moji = "こんな三流プログラム見たこと無いよ"
  moji = Replace(moji, "三流", "キタナイ")  '三流をキタナイに置換え
  Response.Write moji & "<BR>"
みたいに、
変換後 = Replace(元の文字列, 変換したい単語, 置換える単語)
です。
オイオイ、サンプルならウケ狙って、
moji = Replace(moji, "三流", "一流") 
にしてよ(笑)
結果は、わかるよね(笑)
/*
 * 2.Replace関数を使って、タグの追加を考える
*/
この前作成した、ASPソースを表示するサブルーチン覚えてますか?
表示は出来てるんだけど、なんか見にくくて。
htmlって、必要なタグで囲むといろいろな表現ができますよね。
<b>キーワード</b>とやると、キーワードが強調表示されます。
そんなの知ってるよ、だから何?
えっと、
  moji = "こんな三流プログラム見たこと無いよ"
  moji = Replace(moji, "三流", "<b>三流</b>")  '<b>〜</b>で囲う
  Response.Write moji & "<BR>"
とやると、三流の文字が<b>三流</b>に置換わり、
強調表示されます。
これを使用して、講座のテーマ、サンプルのキーワードを指定して、
強調表示させてみたいなぁとフト思いました。
あと、VBScriptの部分、
<% 〜  %>で囲まれているので、
色を変えてみようかなぁ。
/*
 * 3.ソース表示の関数を変更する
*/
インクルードファイルに書いた、
ソースの表示関数を修正してみました。
-- out_src.inc 
<% 'ソースの表示関数  SUB OUT_SRC(strB) 強調表示する単語をもらう
Sub OUT_SRC(strB) 
  Dim strSCR_NAME
  strSCR_NAME = Request.ServerVariables("SCRIPT_NAME")  '名前を代入
  '見出しの表示
  Response.Write "<HR><b>" & strSCR_NAME & "</b><HR>"
  Response.Write "<PRE>"  'スペースを有効にするため
  ' FileSystemObjectを生成します
  Set objFS = Server.CreateObject("Scripting.FileSystemObject")
  ' スクリプト(strSCR_NAME)を読取専用モードで開きデータを読む
  Set ts = objFS.OpenTextFile(Server.MapPath(strSCR_NAME), 1, True)
  Do While ts.AtEndOfStream = False  'ファイルの終端になってない間ループ
    strDATA = ts.ReadLine   'ファイルからデータを一行を読む
    '読み込んだデータをServer.HTMLEncodeで変換表示
    strDATA = Server.HTMLEncode(strDATA)
    '次に、強調文字、<%、%>の置換え処理を行う
    strDATA = Replace(strDATA, strB, "<b>" & strB & "</b>") '強調
    strDATA = Replace(strDATA, "<%", "<font color='blue'><%") '青にする
    strDATA = Replace(strDATA, "%>", "%></font>")     'カラー終了
    '表示を行う
    Response.Write strDATA
    Response.Write chr(13) & chr(10)   '改行する
  Loop
  '使ったファイルは閉じようよ
  ts.close
  Response.Write "</PRE>"  'ここまで
  Response.Write "<HR>"    '<HR>で区切る
End Sub  '関数はここまでですよ。
%>
----
ポイントは、
Sub OUT_SRC(strB) 
引数で強調したいキーワードをもらいます。
あとは、変換関数を並べただけ
まず、読んだデータをエンコードする
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    '読み込んだデータをServer.HTMLEncodeで変換表示
    strDATA = Server.HTMLEncode(strDATA)
なんて言ってるけど、Server.HTMLEncode関数頼り(笑)
タグを挿入(置換える)
^^^^^^^^^^^^^^^^^^^^^
    '次に、強調文字、<%、%>の置換え処理を行う
    strDATA = Replace(strDATA, strB, "<b>" & strB & "</b>") '強調
    strDATA = Replace(strDATA, "<%", "<font color='blue'><%") '青にする
    strDATA = Replace(strDATA, "%>", "%></font>")     'カラー終了
ここでのポイントは、
私がしくじったのは失敗を先に書くと、
strDATA = Replace(strDATA, "<%", "<font color='blue'><%") '青にする
とやってしまい、
上のServer.HTMLEncode関数で<%は&lt;%に置換わってたんですね。
なので、正解は変換された文字をさらに置換えて<Font>を足す、
strDATA = Replace(strDATA, "<%", "<font color='blue'><%") '青にする
だったんですね。
う〜ん深い。
えっ、テメエがデータの変化に付いて行けなかったダケ?だって?
お恥ずかしい。。。(マジであせりました、できなくって(笑))
http://www.ken3.org/cgi-bin/test/out_src.inc
が修正したソース表示の共通ファイルで、
http://www.ken3.org/cgi-bin/test/test021-1.asp
で無事強調表示とスクリプト部分が青色になってます。
*見て下さいね。
/*
 * 4.終わりの挨拶
*/
今回は、
・Replace関数で置換え処理
でした。
素朴な疑問あったら、気軽に、
メール、掲示板に書き込んでくださいね。
ASP、VBScript勉強中の三流プログラマーのKen3でした。
ここまで、読んでいただきどうもです。目的の情報が見つかったか?少々心配しつつ、、、
感想や質問・要望・苦情など 三流君へメッセージを送る。

下記のフォームからメッセージを送ることができます。
[三流君(TOP ken3.org へ戻る)]
 / [ASPで遊ぶ、失敗する]
 / [ASP記事 バックナンバー目次]
まぁ、基本はデータの受け取りかなぁ。
・[Form等を使用したデータのやり取り]・・・ASPと言っても、HTMLの入力フォームからデータを受け取ります。POSTやGETでやりとりを押さえますか。
次は、データの入出力 で ADOを使った(ADOで接続) と SQLの解説を少々
・[ADOでMdbファイルを使う]・・・MDBと接続して、簡単な追加・更新・削除を行った。
・[ADOでExcelと接続してみた]・・・.xlsと接続してSQLを使ってみた。
・[ADOでCSVと接続してみた]・・・.CSV テキストを読み出した。※更新・削除はできません
広告:
DBが使えるので、あまり使用しないけど、普通のテキストファイル処理
・[テキストファイル処理]・・・ファイルを開いて、書き込む。1行読み込みなどを軽く
VBScriptでFormat関数が無いなど、微妙にVBAと違うけど
[VBScript関数関係の説明]・・・少し、処理を書いてみた。
[その他処理サンプル]・・・あまり良いサンプル作れなかったけど。。。
何かの参考となれば幸いです。
[三流君(TOP ken3.org へ戻る)]
 / [ASPで遊ぶ、失敗する]
 / [ASP記事 バックナンバー目次]