Public Function RegexReplace( _
Source As String, _
Pattern As String, _
Replacement As String, _
Optional Flags As String = "" _
)
With New VBScript_RegExp_55.RegExp
If Flags = "" Then
.Global = False
.IgnoreCase = False
.MultiLine = False
Else
.Global = Flags Like "*g*"
.IgnoreCase = Flags Like "*i*"
.MultiLine = Flags Like "*m*"
End If
.Pattern = Pattern
RegexReplace = .Replace(Source, Replacement)
End With
End Function
2014年10月2日木曜日
[Excel VBA] 正規表現パターンと一致する文字列を置換処理するワークシート関数
[Excel VBA] 正規表現パターンと一致する文字列(or 部分文字列)を取得、またはカウントするワークシート関数
※参照設定が必要
Microsoft VBScript Regular Expressions 5.5
Public Function Regex( _
Source As String, _
Pattern As String, _
Optional Flags As String = "", _
Optional MatchIndex As Long = 0, _
Optional SubMatchIndex As Long = 0 _
)
Dim RetVal
Dim Matches As VBScript_RegExp_55.MatchCollection
Dim SubMatches As VBScript_RegExp_55.SubMatches
If MatchIndex = 0 Then
If SubMatchIndex = 0 Then
With New VBScript_RegExp_55.RegExp
If Flags = "" Then
.IgnoreCase = False
.MultiLine = False
Else
.IgnoreCase = Flags Like "*i*"
.MultiLine = Flags Like "*m*"
End If
.Global = True
.Pattern = Pattern
RetVal = .Execute(Source).Count
End With
Else
RetVal = CVErr(XlCVError.xlErrValue)
End If
ElseIf MatchIndex > 0 Then
If SubMatchIndex = 0 Then
With New VBScript_RegExp_55.RegExp
If Flags = "" Then
.IgnoreCase = False
.MultiLine = False
Else
.IgnoreCase = Flags Like "*i*"
.MultiLine = Flags Like "*m*"
End If
.Global = MatchIndex > 1
.Pattern = Pattern
Set Matches = .Execute(Source)
If MatchIndex <= Matches.Count Then
RetVal = Matches(MatchIndex - 1).Value
Else
RetVal = ""
End If
End With
ElseIf SubMatchIndex > 0 Then
With New VBScript_RegExp_55.RegExp
If Flags = "" Then
.IgnoreCase = False
.MultiLine = False
Else
.IgnoreCase = Flags Like "*i*"
.MultiLine = Flags Like "*m*"
End If
.Global = MatchIndex > 1
.Pattern = Pattern
Set Matches = .Execute(Source)
If MatchIndex <= Matches.Count Then
Set SubMatches = Matches(MatchIndex - 1).SubMatches
If SubMatchIndex <= SubMatches.Count Then
RetVal = CStr(SubMatches(SubMatchIndex - 1))
Else
RetVal = ""
End If
Else
RetVal = ""
End If
End With
Else
RetVal = CVErr(XlCVError.xlErrValue)
End If
Else
RetVal = CVErr(XlCVError.xlErrValue)
End If
Regex = RetVal
End Function
2014年8月17日日曜日
JavaScriptでクラス風の書き方
JavaScriptにて、Javaでいうところのクラスを書きたいときの方法。
1. prototypeプロパティにfunctionを追加する
2. thisにfunctionを追加する
基本は 1 の実装方法をとるが、場合によっては 2 の方法をとる。
1. publicで非staticなメソッドの実装
これには次の2通りの実装方法がある。1. prototypeプロパティにfunctionを追加する
2. thisにfunctionを追加する
基本は 1 の実装方法をとるが、場合によっては 2 の方法をとる。
2. publicでstaticなメソッドの実装
3. privateで非staticなメソッドの実装
4. privateでstaticなメソッドの実装
基本形
var classFunc = (function(){
var fn = function(){
// パブリック・フィールド
this.public_field1 = 0;
// パブリック・メソッド1
this.public_method1 = function(){
}
}
// パブリック・メソッド2
fn.prototype.public_method2 = function(){
}
// 静的パブリック・メソッド
fn.public_static_method = function(){
}
// 静的パブリック・フィールド
fn.public_static_field = 1;
// プライベート・メソッド(呼び出し方により静的か否かが変わる)
var private_method = function(){
}
// プライベート・フィールド
var private_field = 10;
return fn;
})();
2013年3月15日金曜日
YYYYMMDD形式の現在日付とHHMISS形式の現在時間を取得する
ログファイルや一時ファイルなどのファイル名を作成する時に使用する YYYYMMDD 形式の現在日付を取得するコードです。
現在日時の取得 その1 ちょっと複雑なコード
変数 DELIM には、年月日の区切り文字を指定します。
YYYYMMDD 形式で取得する場合は、何も指定しません。
YYYY-MM-DD 形式で取得する場合は、- (ハイフン)を指定します。
YYYY.MM.DD 形式で取得する場合は、. (ピリオド)を指定します。
現在日時の取得 その2 より簡単なコード
上記の方法より簡単です。
現在時間の取得
上記の現在日時を取得するコードと同じやり方で現在時間を取得します。
注意しなければならない点を次に挙げます。
1.時間が1桁の場合、先頭はゼロ埋めではなく、空白埋めであること。
例えば、午前9時の場合は「09」ではなく「 9」となること。
2.現在時間を取得する環境変数を利用する為、取得した時間には十ミリ秒単位までの時間が含まれている。ミリ秒以下が不要であれば、ミリ秒以下をトリムする必要があること。
現在日時の取得 その1 ちょっと複雑なコード
変数 DELIM には、年月日の区切り文字を指定します。
YYYYMMDD 形式で取得する場合は、何も指定しません。
YYYY-MM-DD 形式で取得する場合は、- (ハイフン)を指定します。
YYYY.MM.DD 形式で取得する場合は、. (ピリオド)を指定します。
@echo off rem YYYYMMDD形式の現在日付を取得する set DELIM= set YYYYMMDD=%date:~0,4%%DELIM%%date:~5,2%%DELIM%%date:~8,2% echo %YYYYMMDD% rem YYYY-MM-DD形式の現在日付を取得する set DELIM=- set YYYYMMDD=%date:~0,4%%DELIM%%date:~5,2%%DELIM%%date:~8,2% echo %YYYYMMDD% rem YYYY.MM.DD形式の現在日付を取得する set DELIM=. set YYYYMMDD=%date:~0,4%%DELIM%%date:~5,2%%DELIM%%date:~8,2% echo %YYYYMMDD% pause
現在日時の取得 その2 より簡単なコード
上記の方法より簡単です。
@echo off rem YYYYMMDD形式の現在日付を取得する set YYYYMMDD=%date:/=% echo %YYYYMMDD% rem YYYY-MM-DD形式の現在日付を取得する set YYYYMMDD=%date:/=-% echo %YYYYMMDD% rem YYYY.MM.DD形式の現在日付を取得する set YYYYMMDD=%date:/=.% echo %YYYYMMDD% pause
現在時間の取得
上記の現在日時を取得するコードと同じやり方で現在時間を取得します。
注意しなければならない点を次に挙げます。
1.時間が1桁の場合、先頭はゼロ埋めではなく、空白埋めであること。
例えば、午前9時の場合は「09」ではなく「 9」となること。
2.現在時間を取得する環境変数を利用する為、取得した時間には十ミリ秒単位までの時間が含まれている。ミリ秒以下が不要であれば、ミリ秒以下をトリムする必要があること。
@echo off rem HHMISS形式(時,分,秒)の現在日時を取得する set HHMISS=%time:~0,8% set HHMISS=%HHMISS::=% set HHMISS=%HHMISS: =0% echo %HHMISS% rem HHMISSFF形式(時,分,秒,ミリ秒)の現在日時を取得する set HHMISS=%time::=% set HHMISS=%HHMISS:.=% set HHMISS=%HHMISS: =0% echo %HHMISS% pause
登録:
投稿 (Atom)