Visual Basic の文字列をこよなく愛すれば、咳してもひとり

技術メルマガのネタ

青木「文○列と言えば、な~んだ?」
田中「先輩…伏字にしても、文字列としてか読めないんですけど」
青木「まあぁ、そうかもな。伏字にすると、アレだから、文♡列」っていうのはどうだ?」
田中「先輩…伏字というか、なんというか、文字列ですよね。やっぱり」
青木「そうかぁ、そうなると、文字列♡ っていうのは、どうだ?」
田中「…」
青木「ほら、あだち充が開発した、なんでもラブコメになってしまうという、技を君は知らないのか?」
田中「…」
青木「コホン…ああ、秋空。空が高いなぁ」
田中「盆には早いですが…」

だいたい、これだけ覚えておけば大丈夫よ、ってな感じです。
個人的には String.IsNllOrEmpty は使いたくないんですけどね。確かに String 型は Nothing/Null が入るので、null を代入したときに Length プロパティでチェックすると例外が発生してしまう訳ですが、データベースでの NULL を扱うならば、明示的に Nullable を使うほうが他との対応(nullable(of integer)とか)がよいかなぁと。

Imports System.Data.SqlClient

Public Class Form1

    '''
    ''' 基本的なところをちょろっと
    '''
    ''' <param name="sender" />
    ''' <param name="e" />
    '''
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Dim s1 As String = "普通の初期化"
        ' NULL を入れることができる
        Dim s2 As String = Nothing
        ' Empty を入れることができる
        Dim s3 As String = String.Empty
#If False Then
        If s2.Length = 0 Then
            ' 例外発生
        End If
#End If
        If s3 = "" Then
            ' 実は空白と同じ
            MessageBox.Show("実は空白と同じ")
        End If

        If String.IsNullOrEmpty(s2) = True Then
            MessageBox.Show("IsNullOrEmpty を使う")
        End If

        ' 直接文字列に対してメソッドを使える
        Dim s4 As String = "tonny masuda".ToUpper
        MessageBox.Show(s4)

    End Sub

    '''
    ''' String は値型扱いになる
    '''
    ''' <param name="sender" />
    ''' <param name="e" />
    '''
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Dim src As String = "tonny"
        Dim dest As String = ""
        ' 文字列はコピーされる
        dest = src
        ' コピー元を変えても、コピー先は変わらない
        src = "TONNY"
        MessageBox.Show( _
            String.Format("src is {0}. dest is {1}", src, dest))
    End Sub

    '''
    ''' ToString を使ってフォーマットする
    '''
    ''' <param name="sender" />
    ''' <param name="e" />
    '''
    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        ' 日付をフォーマット
        MessageBox.Show(Date.Now.ToString("yyyy年MM月dd日"))
        ' 数値をフォーマット
        Dim i As Integer = 1000
        MessageBox.Show(i.ToString("#,###円"))
        ' クラス名など
        Dim cn As New SqlConnection
        MessageBox.Show(cn.ToString)
        ' ToString を overrides する
        Dim hello As New Hello
        hello.age = 40
        hello.name = "tonny masuda"
        MessageBox.Show(hello.ToString)
    End Sub

    '''
    ''' 文字列の連結諸々
    '''
    ''' <param name="sender" />
    ''' <param name="e" />
    '''
    Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click

        ' + 演算子で連結
        Dim s1 As String = "tonny" + " " + "masuda"
        ' & 演算子で連結
        Dim s2 As String = "tonny" & " " & "masuda"
        ' 数値から暗黙の変換
        Dim s3 As String = 1234
        ' 数値へ暗黙の変換
        Dim i4 As Integer = "1234"
    End Sub

    '''
    ''' よく使われる String のメソッド
    '''
    ''' <param name="sender" />
    ''' <param name="e" />
    '''
    Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
        Dim s1 As String = "tonny masuda"

        ' 文字列の長さ
        Dim i2 As Integer = s1.Length
        ' 先頭の文字
        Dim s3 As String = s1.Substring(0, 1)
        Dim s4 As String = s1(0)
        ' 最後の文字
        Dim s5 As String = s1.Substring(s1.Length - 1, 1)
        Dim s6 As String = s1(s1.Length - 1)
        ' 大文字/小文字
        Dim s7 As String = s1.ToUpper
        Dim s8 As String = s1.ToLower
        ' 前後の空白を削除
        Dim s9 As String = s1.Trim
        ' 置き換え
        Dim s10 As String = s1.Replace("masuda", "増田")
        ' 指定文字列を削除
        Dim s11 As String = s1.Replace("禁則事項ですッ!!!", "")
        ' 先頭の5文字だけ残す
        Dim s12 As String = s1.Substring(0, 5)
        Dim s13 As String = s1.Remove(5)
        ' 左寄せ/右寄せ
        Dim s14 As String = s1.PadRight(20)
        Dim s15 As String = s1.PadLeft(20, "○")
        MessageBox.Show(s15)

    End Sub
End Class

'''
''' ToString を overrides したクラス
'''
'''
Public Class Hello
    Public age As Integer
    Public name As String

    Public Overrides Function ToString() As String
        Return String.Format("オラ {0}. 年齢 {1} 歳だけど、よろしくなッ!!!", name, age)
    End Function
End Class

カテゴリー: VB, 技術メルマガ パーマリンク