'StringTest.bas 'https://www.freebasic.net/forum/viewtopic.php?f=7&t=22997 '文字列を操作する便利な関数の使用例 #include "StringFxm.bas" Dim As String s1 = "TestxyzTESTxyzabcdefgxyz123456", s2 = "xyz", TZ = ";" Dim As Integer i Print CountString(s1, "xyz") Print For i = 1 To 4 Print i, SubString(s1, "xyz", i) Next Print Print ReplaceString(s1, "xyz", "////") Print Print InsertString(s1, "/Thisisabsolutenonsense/", 5) Print print "終了するために、何かキー入力して下さい!" GetKey
Function CountString(Byref s1 As String, Byref s2 As String) As Integer '文字列 S1 の中で、文字列 s2 が出現する箇所の数を返します Dim As Integer i, count count = 0 i = 1 Do i = Instr(i, s1, s2) If i > 0 Then count += 1: i += Len(s2) Loop Until i = 0 Return count End Function Function SubString(Byref s1 As String, Byref s2 As String, Byval k As Integer) As String ' 文字列 s1 の中で、文字列 s2(1文字以上)で分離した、k-番目の部分文字列を返します。 ' 最初は、k = 1 から始まります。 Dim As Integer i, j, count Dim As String s count = 0 i = 1 s = s1 Do j = i i = Instr(i, s1, s2) If i > 0 Then count += 1: i += Len(s2) Loop Until i = 0 Or count = k If i > 0 Or count = k - 1 Then If i = 0 Then s = Mid(s1, j) Else s = Mid(s1, j, i - Len(s2) - j) End If End If Return s End Function Function ReplaceString(Byref s1 As String, Byref s2 As String, Byref s3 As String) As String '文字列 s1 の中の、すべての部分文字列 s2 を、文字列 s3 で取り替えて、 'その変更結果の文字列を返します Dim As Integer i Dim As String s s = s1 i = 1 Do i = Instr(i, s, s2) If i > 0 Then s = Left(s, i - 1) & s3 & Mid(s, i + Len(s2)): i += Len(s3) Loop Until i = 0 Return s End Function Function InsertString(Byref s1 As String, Byref s2 As String, Byval k As Integer) As String '文字列 s1 の位置 k に、文字列 s2 を挿入します Return Left(s1, k - 1) & s2 & Mid(s1, k) End Function Function LeftSet(Byref s As String, Byval length As Integer) As String '長さ "length" の文字列バッファに、文字列 s を左揃えします Dim As String s0 s0 = Space(length) Lset s0, s Return s0 End Function Function RightSet(Byref s As String, Byval length As Integer) As String '長さ "length" の文字列バッファに、文字列 s を右揃えします Dim As String s0 s0 = Space(length) Rset s0, s Return s0 End Function