[三流君] −−> [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でした。

フィードバック

ASP系の→[掲示板]←を覗く、質問を書き込む

評価・感想

No.021を読んだ満足度(評価)は?
5満足(参考になった)
4まぁまぁ(一部参考になった)
3普通(どちらとも言えない)
2なんかなぁ(期待と違った)
1不満(読んで損した気分)
作者に感想・質問を送る場合は下記に気軽に書いてください
あなたのお名前(ニックネーム) さん

作者からの返信は、 不用 E-mail で受信したい
*質問・感想はメルマガで紹介する場合があります

三流君の主なリンク先

[アクセスランキング] [サイトマップ] [リンク先・相互リンク先など]
ASPで遊ぶ、失敗する 掲示板 バックナンバー 登録と解除
三流プログラマー 業務の愚痴 掲示板 バックナンバー 登録と解除
VBAで楽しくプログラミング 掲示板 バックナンバー 登録と解除
コンビニのオモテとウラ話 掲示板 バックナンバー 登録と解除
www.ken3.org(サイト内)から Google を利用して、

Ken3の日記(weblog) -- [広告・副収入系] [プログラマー業務の愚痴] [VBA系の話題] [ASP系の話題] [コンビニ系ネタ] [その他]

その他 宣伝広告