Imports System.Windows.Forms
Module Module1
Sub Main()
'クリップボードのオブジェクトを取り出し
Dim data As IDataObject = My.Computer.Clipboard.GetDataObject()
'テキスト
Dim txt As String = Nothing
If data.GetDataPresent(DataFormats.UnicodeText) Then
'ユニコードのテキスト
txt = DirectCast(data.GetData(DataFormats.UnicodeText), String)
ElseIf data.GetDataPresent(DataFormats.Text) Then
'テキストに変換
txt = DirectCast(data.GetData(DataFormats.Text), String)
End If
'テキストがあるなら
If Not txt Is Nothing Then
'クリップボードをクリア
My.Computer.Clipboard.Clear()
'変換
txt = Transrate(txt)
'クリップボードに文字列を設定
My.Computer.Clipboard.SetText(txt)
End If
End Sub
''' <summary>
'''
''' </summary>
''' <param name="str"></param>
''' <returns></returns>
''' <remarks></remarks>
Private Function Transrate(ByVal str As String) As String
Dim pattern1 As String = "\d{4}-\d{4}"
Dim pattern2 As String = pattern1 & "-\d{2}"
Dim pattern3 As String = pattern2 & "-\d{4}"
'Regexオブジェクトを作成
Dim r3 As New System.Text.RegularExpressions.Regex(pattern3)
Dim r2 As New System.Text.RegularExpressions.Regex(pattern2)
Dim r1 As New System.Text.RegularExpressions.Regex(pattern1)
'正規表現と一致する対象を1つ検索
Dim m3 As System.Text.RegularExpressions.Match = r3.Match(str)
Dim m2 As System.Text.RegularExpressions.Match = r2.Match(str)
Dim m1 As System.Text.RegularExpressions.Match = r1.Match(str)
If m3.Success Then
'一致した対象が見つかったときキャプチャした部分文字列を表示
Return m3.Value
ElseIf m2.Success Then
Return m2.Value
ElseIf m1.Success Then
Return m1.Value
End If
Return String.Empty
End Function
End Module
最終更新:2015年04月19日 17:13