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

FreeBASIC 文字列操作 Split()

目次→フォーラム→FreeBASIC→補足String Function Split()←オリジナル・サイト

文字列操作 Split() 左にメニュー・フレームが表示されていない場合は、ここをクリックして下さい

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

 このページは、FreeBASIC のフォーラムに投稿された、文字列を分割するサブルーチンを、日本語化して紹介します。

ptitjoz さんの Sub 区切文字は1文字
dodicat さんの Sub 区切文字が複数も可

ptitjoz さんの Sub

Split02tab.bas 区切文字は1文字
'Split  version 02
'by ptitjoz ≫ Apr 09, 2018 14:18
'https://www.freebasic.net/forum/viewtopic.php?p=245695#p245695

'==================================================
' Split02 Sub
'==================================================

Sub Split02(ByVal s As String,delimit As String,Outcome() As String)
   ReDim Outcome(0)

   Dim As String t=s     '作業文字列
   Dim As Integer nb=0   '要素の数
   Dim As Integer p,i

   ' 配列のサイズを決定する要素の数を見つける
   For i=1 To Len(s)
   	If Mid(s,i,1)=delimit Then nb=nb+1
   Next

   '配列のサイジング
   nb=nb+1 ' 最後の要素に 1 を加算
   ReDim Outcome(1 To nb) 
   
   '配列に記入
   For i=1 To nb
   	p=InStr(t,delimit)
   	Outcome(i)= Mid(t,1,p-1)
   	t=Right(t,Len(t)-p)
   Next

End Sub


'==================================================
' 活用例
'==================================================

Dim As String s = "aaaa	bbbbbb	ccccc	ddddddd	eeeeee"  '切り取る文字列
Dim As String deliminator
ReDim As String r()

deliminator ="	" '区切り文字 Tab の例
Print Asc(deliminator) 'Tab の文字コードは9
Print

Split02(s,deliminator,r())
For n As Long=LBound(r) To UBound(r)
   Print n,r(n),Len(r(n))
Next

Sleep
ページの頭に戻る

dodicat さんの Sub

Split_dodicat.bas 区切文字が複数でも可
'Split_dodicat
'by dodicat ≫ Apr 09, 2018 15:14
'https://www.freebasic.net/forum/viewtopic.php?p=245701#p245701

'==================================================
' string_split Sub
'==================================================

Sub string_split(ByVal s As String,chars As String,result() As String)
   ReDim result(0)
   Dim As String var1,var2
   Dim As Long pst,LC=Len(chars)
   
   #Macro split(stri)
      pst=InStr(stri,chars)
      var1="":var2=""
      If pst<>0 Then
         var1=Mid(stri,1,pst-1)
         var2=Mid(stri,pst+LC)
      Else
         var1=stri
      End If
      
      If Len(var1) Then 
         ReDim Preserve result(1 To UBound(result)+1)
         result(UBound(result))=var1
      End If
   #EndMacro
   
   Do
      split(s):s=var2
   Loop Until var2=""
End Sub


'==================================================
' 活用例
'==================================================

Dim As String s="aaaa123456789bbbbbb123456789ccccc123456789ddddddd123456789eeeeee"
Dim As String deliminator
ReDim As String r()

deliminator="123456789"

string_split(s,deliminator,r())

For n As Long=LBound(r) To UBound(r)
   Print n,r(n)
Next

Sleep
ページの頭に戻る
補足 に戻る
←リンク元に戻る プログラム開発関連に戻る
ページ歴史:2024-04-03
日本語翻訳:WATANABE Makoto、原文著作者:ptitjoz、dodicat

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

表示-非営利-継承