FreeMat v4.0 日本語ドキュメント
文字列関数

 

ドキュメント目次

  • strstr  文字列サーチ
  • regexp  正規表現
  • isalpha  アルファキャラクタの判定
  • isdigit  数字キャラクタの判定
  • isspace  スペースキャラクタの判定
  • cellstr  文字列配列をセル配列に変換
  • deblank  文字列から最後のブランクを取り除く
  • lower  大文字を小文字に変換
  • regexprep  正規表現の置き換え
  • strcmp  文字列の比較
  • strcmpi  文字列の比較(Insensitive)
  • strfind  文字のサーチ
  • strncmp  Nの長さの文字列を比較
  • strrep  文字列の置き換え
  • strtrim  文字列のスペース(最初と最後のもの)を取り除く
  • upper  小文字を大文字に変換
  • blanks  ブランク文字の作成

 --------------------------------------------------------------------------------------------
strstr 文字列サーチ
 
 [構文]
 p = strstr(x,y)
文字列xの中から文字列yをサーチします。文字列yがあれば、
先頭のインデックスを 無ければ0を返します。

 

 [例]
--> strstr('hello','lo')

ans =

4

--> strstr('quick brown fox','own')

ans =

9

--> strstr('free stuff','lunch')

ans =

0


 --------------------------------------------------------------------------------------------
regexp 正規表現

  [構文]
本関数はやや複雑であり、またMATLABとの互換性も完璧とは
いえない。 
  regexp('str','expr')
  [start stop tokenExtents match tokens names] 
				= regexp('str','expr') 
  [o1 o2 ...] = regexp('str','expr', 'p1', 'p2', ...) 
  [o1 o2 ...] = regexp('str','expr', p1, p2, ..., 
					'mode1', 'mode2')

 

strは比較される文字列。正規表現exprと比較されます。

  • startは、正規表現と一致した先頭のインデックス。
  • stop は、正規表現と一致した末尾のインデックス。
  • tokenExtentsは、セル配列であり、一致した先頭および末尾のインデックスが格納されます。もし 'once'モードを使用しているなら出力はdouble型となっています。
  • matchはセル配列で、一致した文字列が格納されます。'once'モードでは文字列型です。
  • tokensはセル配列で、正規表現に一致したトークンと同じ文字列を格納しています。モードでは文字列型です。
  • namedは構造体で、正規表現でキャプチャされたネームドトークンです。それぞれのネームドトークンにはフィールドが割り当てられます。

p1、p2・・・は、出力名です。mode1、mode2・・・は以下モードから選択可能です。

  • 'once' 最初の照合のみ返します。
  • 'matchcase' - letter case must match ( regexpのデフォルト)
  • 'ignorecase' - letter case is ignored (regexpiのデフォルト)
  • 'dotall' ピリオド「.」 演算子は全て照合します (デフォルト)
  • 'dotexceptnewline' ピリオド「.」演算子は新ラインのキャラクターを照合しません。
  • 'stringanchors'^」および$」の演算子は、最初と最後の文字だけ照合します。
  • 'lineanchors' -「^ 」および「 $」はラインの最初と最後を照合します。
  • 'literalspacing' - スペースキャラクタおよびコメントキャラクタ「 #」は他のキャラクタと同じように集合されます。
  • 'freespacing' - 全てのスペースとコメントは無視されます。それぞれ「\」および「\#」をスペースやコメントキャラクタと照合するために用いてください。
 [例]
--> [start,stop,tokenExtents,match,tokens,named] = regexp('quick down town zoo','(.)own')
start =

7 12

stop =

10 15

tokenExtents =

[[1 2] uint32] [[1 2] uint32]

match =

['down'] ['town']

tokens =

{[1 1] cell } {[1 1] cell }

named =

 

--------------------------------------------------------------------------------------------
isalpha アルファキャラクタの判定

  [構文]

  x = isalpha(s)

 sは文字列。sがアルファベットなら論理値1を返します。

  [例]

--> isalpha('numb3r5')

ans =

1 1 1 1 0 1 0


 --------------------------------------------------------------------------------------------
isdigit 数字キャラクタの判定

[構文]
 
 x = isdigit(s) 
sは文字列。数字のキャラクタなら論理値1を返します。 
 
[例]

--> isdigit('numb3r5')

ans =

0 0 0 0 1 0 1



 --------------------------------------------------------------------------------------------
isspace スペースキャラクタの判定
 
  [構文]
 
 x = isspace(s)
 
  [例]

--> isspace(' hello there world ')

ans =

1 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1


 --------------------------------------------------------------------------------------------
cellstr 文字列をセル配列に変換
 
  [構文]
 y = cellstr(x)

 

   [例]

--> a = ['quick';'brown';'fox ';'is ']

a =


quick
brown
fox
is

--> cellstr(a)

ans =

['quick']
['brown']
['fox']
['is']


 --------------------------------------------------------------------------------------------
deblank 文字列から最後のブランクを取り除く

  [構文]
  y = deblank(x)
  y = deblank(c) 
 xは文字列、cはセル配列。
 

  [例]

(1)文字列が入力の場合

--> deblank('hello ')

ans =

hello

(2)セル配列が入力の場合
--> deblank({'hello ','there ',' is ',' sign '})

ans =

['hello'] ['there'] [' is'] [' sign']


 --------------------------------------------------------------------------------------------
lower 大文字を小文字に変換
 
  [構文]
 y = lower(x)
 y = lower(c)

  xは文字列、cはセル配列。

   [例]
(1)文字列が入力の場合

--> lower('this Is Strange CAPitalizaTion')

ans =

this is strange capitalization


(2)セル配列が入力の場合

--> lower({'This','Is','Strange','CAPitalizaTion'})

ans =

['this'] ['is'] ['strange'] ['capitalization']

 --------------------------------------------------------------------

regexprep 正規表現の置き換え

[構文]
  outstring 
	= regexprep(instring,pattern,replacement,modes) 

 

 instringは操作される文字列です。またpatternはregexpで了承された正規表現です。整合がとれたらreplacementで指定されたものと置き換えられます。modesはregexpのものと同様です。


[例]
--> regexprep('quick down town zoo','(.)own','12345')

ans =

 quick 12345 12345 zoo


 --------------------------------------------------------------------------------------------
strcmp 文字列の比較

[構文]
 p = strcmp(x,y)
 p = strcmp(cellstra,cellstrb) 
 
x,yは文字列、 cellstra,cellstrbはセル配列です。比較を行い
サイズが等しく同じ文字列の場合に真を返します。また、比較
する前に一度cellstrが実行されますので、最後のスペースは
取り除かれ比較されます。 
 
 
[例]
(1) 文字列の場合
--> x1 = 'astring';
--> x2 = 'bstring';
--> x3 = 'astring';
--> strcmp(x1,x2)

ans =

0

--> strcmp(x1,x3)

ans =

1

(2) セル配列の場合

--> x = {'astring','bstring',43,'astring'}

x =

['astring'] ['bstring'] [43] ['astring']

--> p = strcmp(x,'astring')

p =

1 0 0 1 
 
 
--> strcmp({'this','is','a','pickle'},{'what','is','to','pickle'})

ans =

0 1 0 1

--> strcmp({'this','is','a','pickle'},['peter ';'piper ';'hated ';'pickle']) 

ans = 0 0 0 1

 --------------------------------------------------------------------------------------------
strcmpi 文字列の比較(insensive)

[構文]
 p = strcmpi(x,y)

ほぼ上記のstrcmpと同じ。ただしcaseを無視するとのことです。

正直caseの意味がわからないので、要調査です。

 --------------------------------------------------------------------------------------------
strfind 文字のサーチ

  [構文]
 ndx = strfind(string, pattern)
 ndx = strfind(cells, pattern) 
 
stringもしくはcellsの中からpatternの文字列を探し先頭の位置を返し
ます。 
 
  [例]
(1)入力が文字列
--> a = 'how now brown cow?'

a =

how now brown cow?

--> b = strfind(a,'ow')

b =

2 6 11 16


(2)入力がセル配列

--> a = {'how now brown cow','quick brown fox','coffee anyone?'}

a =

['how now brown cow'] ['quick brown fox'] ['coffee anyone?']

--> b = strfind(a,'ow')

b =

[[1 4] int32] [9] []

 
 --------------------------------------------------------------------------------------------
strncmp Nの長さの文字列を比較

各入力パターンの最初Nの長さだけ比較します。 
  [構文]
 p = strncmp(x,y,n) 
 p = strncmp(cellstra,cellstrb,n) 
 

  [例]

(1)入力が文字列

--> x1 = 'matlab';
--> x2 = 'freemat';
--> x3 = 'freeware';
--> strncmp(x1,x2,4)

ans =

0

--> strncmp(x2,x3,4)

ans =

1


(2)入力がセル配列

--> x = {'ast','bst',43,'astr'}

x =

['ast'] ['bst'] [43] ['astr']

--> p = strncmp(x,'ast',3)

p =

1 0 0 1
 
(3) 入力2つがセル配列
--> strncmp
	({'this','is','a','pickle'},{'think','is','to','pickle'},3)

ans =

1 0 0 1
 
(4)入力2つが文字列配列
--> strncmp
({'this','is','a','pickle'},['peter ';'piper ';'hated ';'pickle'],4); 
 

 --------------------------------------------------------------------------------------------
strrep 文字列の置き換え

[構文]
 p = strrep(source,find,replace)

 sourceの文字列とfindの文字列を比較し、同じ場合はreplaceに変換します。

 [例]

(1)

--> strrep('Matlab is great','Matlab','FreeMat')

ans =

FreeMat is great


(2)

--> strrep({'time is money';'A stitch in time';
			'No time for games'},'time','money')

ans =

['money is money']
['A stitch in money']
['No money for games']




 --------------------------------------------------------------------------------------------
strtrim 文字列のスペース(最初と最後のもの)を取り除く

  [構文]
 y = strtrim(strng)
 y = strtrim(cellstr) 
 

 [例]

(1)
--> a=strtrim('  lot of blank spaces    ')

a =

 lot of blank spaces

--> size(a)

ans =

  1 19

(2)

--> strtrim({' space','enough ',' for ',''})

ans =

['space'] ['enough'] ['for'] []



 --------------------------------------------------------------------------------------------
upper 小文字を大文字に変換

  [構文]
 y = upper(x)
 y = upper(c) 

 

    [例]
(1)

--> upper('this Is Strange CAPitalizaTion')

ans =

THIS IS STRANGE CAPITALIZATION


(2)

--> upper({'This','Is','Strange','CAPitalizaTion'})

ans =

['THIS'] ['IS'] ['STRANGE'] ['CAPITALIZATION']


 --------------------------------------------------------------------------------------------
blanks ブランク文字の作成

  [構文]
 str = blanks(n)

 

    [例]

--> sprintf(['x0123456789y\n','x',blanks(10),'y\n'])

ans =
x0123456789y
x          y