アットウィキロゴ
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