- サイトのトップ
- > 一般教養 と ネタ
- > [j|vb]script
- ページ内ナビゲーション
- ページのトップ
- ms製スクリプトが二種類あるメリット
- 相違点1
- 相違点2-1(jscriptの正規表現)
- 相違点2-2(vbscriptの正規表現)
- vbsスニペット
- ページの末尾
jscriptとは、javascriptもどきのms謹製スクリプト。
vbscriptとは、vbもどきのms謹製スクリプト。
2010/07/29 スニペット追記
(特に)メンテナンス時や、(稀に)作成時に、
どの言語を使っているか分らなくなり、
容易かつ速やかに混乱する事が出来る。
例えば、互いの構文、メソッドなどを混在して用いて、
意味不明なエラーメッセージに苦しむ事が出来る。
jscript
・行末記号としてセミコロンが必要
・コメントはダブルスラッシュ
vbscript
・行末記号は不要
・コメントはシングルクォート
var re, p, q, r, s;
s = "The quick brown fox jumps over the lazy dog"; // 対象文字列
p = "fox"; // 検索文字列
q = "rat"; // 置換文字列
re = new RegExp(p,["flag"]) ; // 正規表現作成
r = s.match(re); // 検索(返値はnullか配列)
r = s.replace(re, q); // 置換(返値は置換後文字列)
// replaceはstringオブジェクトのメソッド
flag:
g グローバル検索する(しない)
i 大小文字区別しない(する)
m 複数行検索する(しない)
対象文字列内に、検索文字列が不在の場合、
";が無い"といったエラーを、検索文字列定義行で返す?
Dim re, p, q, r, s
s = "The quick brown fox jumps over the lazy dog" ' 対象文字列
p = "fox" ' 検索文字列
q = "rat" ' 置換文字列
Set re = New RegExp ' 正規表現作成
re.Pattern = p ' パターン設定
re.Global = True ' 文字列全体を検索
re.IgnoreCase = True ' 大小文字区別しない
Set r = re.Execute(s) ' 検索(返値はmatchesコレクション)
r = re.Replace(s, q) ' 置換(返値は置換後文字列)
' replaceはRegExpオブジェクトのメソッド
対象文字列内に、検索文字列が不在の場合、
空のmatchesコレクションを返す。
高度なテクとか期待してはいけません。
どっちかつぅと「等号を二つも並べんな、タコ!」とか、
「if文やfor文の書き方も分からんのか、ボケ!」とか
「馬鹿め! switch文は死んだわ」みたいなメッセージに
心が折れた人のための、癒しのサンプルコードです。
難しいことなんか、してませんから><
001 rem
#############################################
002 rem vbs スニペット
003 rem
#############################################
004 rem 変数は定義すれ
005 Option Explicit
006
007
008 rem 変数・定数定義
009 Dim intVal
010 Const ZERO = 0
011 intVal = ZERO
012
013 Dim strMsg, strTitle
014 Dim aryNum(9)
015 rem aryNum(0) .. aryNum(9)
016
017
018 strTitle = "vbs If文"
019 If intVal = 0 Then
020 strMsg = "等値判定子は等号がいっこ"
021 Else
022 strMsg = "不等判定子は<>"
023 End If
024 MsgBox strMsg, vbOKOnly, strTitle
025
026
027 strTitle = "vbs Select Case文"
028 Select Case intVal
029 Case 0
030 strMsg = "switch
じゃないので注意"
031 Case 1
032 strMsg = "break
しなくても以降の Case はパスする"
033 Case Else
034 strMsg = "default
じゃないので注意"
035 End Select
036 MsgBox strMsg, vbOKOnly, strTitle
037
038
039 strTitle = "vbs For文"
040 For intVal = 0 to 4 step 2
041 strMsg = intVal / 2 + 1 & "回目
のループ"
042 MsgBox strMsg,
vbOKOnly, strTitle
043 Exit For
044 Next
045
046
047 strTitle = "vbs Doループ 1"
048 Do While
intVal > 0
049 strMsg = "While の前に Do 必須"
050 strMsg = strMsg & vbCrLf
& "今の値は " & intVal
051 MsgBox strMsg,
vbOKOnly, strTitle
052 Exit Do
053 Loop
054
055
056 strTitle = "vbs Doループ 2"
057 Do
058 intVal = intVal + 1
059 strMsg = "While の前に Loop 必須"
060 strMsg = strMsg & vbCrLf
& "今の値は " & intVal
061 MsgBox strMsg,
vbOKOnly, strTitle
062 Loop While
intVal < 2
063
064
065 strTitle = "vbs 鉄の掟"
066 strMsg = "剰余は'Mod'、階乗は'^'、
論理演算は'And','Or','Not'"
067 MsgBox strMsg, vbOKOnly, strTitle
068
069
070 rem vbs File Write
071 Dim strFileName, FileSystemObj,
FileStreamOut
072 Const OVERWRITE = True
073 Const KEEPORIG = False
074 strFileName = "c:\temp\temp.txt"
075 Set FileSystemObj = CreateObject("Scripting.FileSystemObject")
076
077 On Error
Resume Next
078 Set FileStreamOut =
FileSystemObj.CreateTextFile(strFileName,
KEEPORIG)
079 If Err.Number
<> 0 Then
080 If MsgBox("既存ファイル上書?",
vbOKCancel) = vbOK Then
081 Set
FileStreamOut = FileSystemObj.CreateTextFile(strFileName,
OVERWRITE)
082 Else
083 WScript.Quit
084 End If
085 Err.Clear
086 End If
087 On Error
GoTo 0
088
089 FileStreamOut.WriteLine( "Date : " & Date )
090 FileStreamOut.WriteLine( "Now : " & Now )
091 FileStreamOut.Close
092
093
094 strTitle = "vbs File Read"
095 Dim FileStreamIn
096 Const FORREADING = 1
097
098 Set FileStreamIn = FileSystemObj.OpenTextFile(strFileName, FORREADING)
099 strMsg = FileStreamIn.ReadLine()
100 Do While
FileStreamIn.AtEndOfLine <> True
101 strMsg = strMsg & vbCrLf
& FileStreamIn.ReadLine()
102 Loop
103 FileStreamIn.Close
104 MsgBox strMsg, vbOKOnly, strTitle
105
106
107 strTitle = "vbs re search"
108 Dim re, SourceText,
SearchPattern, SearchResult, ResultMatch
109 SourceText = "The quick brown fox jumps over
the lazy dog"
110 rem SearchPattern = "the"
111 SearchPattern = "thexxx"
112 strMsg = "Source
: " & SourceText
113 strMsg = strMsg & vbCrLf & "search : " & SearchPattern
114
115 Set re = New RegExp
116 re.Pattern = SearchPattern
117 re.Global = True
118 re.IgnoreCase = True
119
120 Set SearchResult = re.Execute(
SourceText )
121 strMsg = strMsg & vbCrLf & "Count : " &
SearchResult.Count
122 For Each
ResultMatch in SearchResult
123 strMsg = strMsg & vbCrLf
& "pos : " & ResultMatch.FirstIndex
124 strMsg = strMsg & " / txt : "
& ResultMatch.Value
125 Next
126 MsgBox strMsg, vbOKOnly, strTitle
127
128
129 strTitle = "vbs re Replace"
130 Dim ReplaceText, ReplaceResult
131 SourceText = "The quick brown fox jumps over
the lazy dog"
132 SearchPattern = "fox"
133 ReplaceText = "rat"
134
135 re.Pattern = SearchPattern
136 re.Global = True
137 re.IgnoreCase = True
138
139 ReplaceResult = re.Replace(
SourceText, ReplaceText )
140 strMsg = "Source : " & SourceText
141 strMsg = strMsg & vbCrLf & "search : " & SearchPattern
142 strMsg = strMsg & vbCrLf & "Replace : "
& ReplaceText
143 strMsg = strMsg & vbCrLf & "result : " & ReplaceResult
144 MsgBox strMsg, vbOKOnly, strTitle
145
146 rem
#############################################
147 rem End of vbs スニペット
148 rem
#############################################
- ページ内ナビゲーション
- ページのトップ
- ms製スクリプトが二種類あるメリット
- 相違点1
- 相違点2-1(jscriptの正規表現)
- 相違点2-2(vbscriptの正規表現)
- vbsスニペット
- ページの末尾
- サイト内ナビゲーション
- サイトのトップ
- ロト6
- ミニロト
- コンソールユーティリティ
- りんくす
- ぶいあい
- グラフィックユーティリティ
- smoothdraw
- gimp
- だたばせ と 表計算
- sql
- 表計算
- imemo
- 一般教養 と ネタ
- 正規表現
- 度量衡換算表
- [j|vb]script
- 一発芸(なんちゃら2.x)
- 三角関数
- その他
- PDFmyURL 簡易リファレンス
- オペラ・ウィジェット