[三流君] −−> [ASPで遊ぶ、失敗する] −−> [バックナンバー一覧]
−−> No.021 文字列の置き換え、Replace関数を使用

文字列の置き換え、Replace関数を使用



本文(発行内容)


<文字列の置き換え、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でした。


ページフッター

ここまで、読んでいただきどうもです。目的の情報が見つかったか?少々心配しつつ、、、

三流君へ メッセージを送る

感想や質問・要望・苦情など 三流君へメッセージを送る。
返信例 XXXXさんへ
下記のフォームからメッセージを送ることができます。


あなたのお名前(ニックネーム):さん
返信は?:

アドレス:に返事をもらいたい
感想や質問↓:


(感想や質問・要望・苦情はHPで記事に載せることがあります。)

種類別のリンク や 広告など

[三流君(TOP ken3.org へ戻る)] / [ASPで遊ぶ、失敗する] / [ASP記事 バックナンバー目次]


Blogとリンク:[三流君のMemo別館]/ [ASP 三流君のソースコード置き場]/ [Ken3Video YouTubeで動画解説]
広告:

気になった ジャンル ↓を選択してください。

まぁ、基本はデータの受け取りかなぁ。
・[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記事 バックナンバー目次]


広告: