FreeBASIC マニュアルのトップに戻る

FreeBASIC Some string functions

目次→フォーラム→FreeBASIC→補足Some string functions←オリジナル・サイト

便利な文字列関数 左にメニュー・フレームが表示されていない場合は、ここをクリックして下さい

←リンク元に戻る プログラム開発関連に戻る

 文字列を操作する便利な関数を作ってみました。

追記:下記でも、速度最適化された多くの文字列関数のライブラリをダウンロードできます。
https://www.freebasic.net/forum/viewtopic.php?f=8&t=22340
使い方は、lib パスにライブラリ(.a ファイル) を登録して、inc パスに .bi ファイルを置くだけです。

使用例:
by Lothar Schirm ≫ Oct 25, 2014 17:53
'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

 文字列を操作する関数
by fxm ≫ Oct 25, 2014 18:44
このプログラムは、'StringFxm.bas' という名前で保存して下さい。
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

 
補足 に戻る
←リンク元に戻る プログラム開発関連に戻る
ページ歴史:2014-11-01
日本語翻訳:WATANABE Makoto、原文著作者:Lothar Schirm 、fxm

ホームページのトップに戻る

表示-非営利-継承