SML# - Tutorial/014-4 Diff

  • Added parts are displayed like this.
  • Deleted parts are displayed like this.

[ [[トップ |Tutorial]]| [[目次|Tutorial/000]] | [[前ページ|Tutorial/014]] | [[ 次ページ |Tutorial/015]] ]
----
C言語と違い,MLではstring型(文字列型)は基本型であり,
整数型などの場合と同様に,組み込み関数を用いてプログラムする.

!string型定数

MLの文字列定数は,
"Hi, there!"
のように"(double quote)で囲んで記述する.
この中に,文字型の時と同様,以下のエスケープ文字を書くことができる.
||!エスケープ文字||意味||
|| \a || 警告 (ASCII 7)||
|| \b || バックスペース (ASCII 8)||
|| \t || タブ(ASCII 9)||
|| \n || 改行(ASCII 10)||
|| \v || 垂直タブ (ASCII 11)||
|| \f || フォームフィード(ASCII 12)||
|| \r || 復帰 (return) (ASCII 13)||
|| \\^C || 制御文字C||
|| \\ || 文字||
|| \" || 文字"||
|| \ddd|| 数字dddに対応するアスキー文字||
|| \f ... f\ ||フォーマット文字f(空白,改行,タブ)で挟まれた文字を無視
以下はこれら定数の例である,
# "Hi, I am SML#";
val it = "Hi, I am SML#" : string
# "Hi, I am SML#.\
> \ I became operational on March 31, 2007.";
val it = "Hi, I am SML#. I became operational on March 31, 2007." : string
# "Hi, I am SML#.\n\
> \I became operational on March 31, 2007.";
val it = "Hi, I am SML#.\nI became operational on March 31, 2007." : string
# print it;
Hi, I am SML#.
I became operational on March 31, 2007.val it = () : unit
#
最後のprintは文字列データを端末に印字する関数である.

!string型の基本操作(対話型環境に定義済み)
||!式||!意味||
||size s||文字列sの長さ(文字数)||
||substring(s,i,j)||文字列sのi番目(はじめは0)からj文字の部分列||
||explode s||文字列sを文字のリストに変換||
||implode L||文字のリストLを文字列に変換||
||concat L||文字列のリストを一つの文字列に連結||
||s1 <= s2||文字列s1と文字列s2の比較||
||s1 < s2||文字列s1と文字列s2の比較||
||s1 >= s2||文字列s1と文字列s2の比較||
||s1 > s2||文字列s1と文字列s2の比較||
||s1 ^ s2||文字列s1と文字列s2の連結||
||print s||文字列sを端末にプリントする||

substringは,文字列の範囲を越えた部分を指定すると
Substring例外が起る.

!strin型の基本操作(ライブラリ関数)
string型の基本ライブラリ名はStringである,その内容は以下の通り,
# structure A = String;
structure A
: sig
     type char = Char.char
     type string = string
     val < : string * string  -> bool
     val <= : string * string  -> bool
     val > : string * string  -> bool
     val >= : string * string  -> bool
     val ^ : string * string  -> string
     val collate : (char * char  -> order)  -> string * string  -> order
     val compare : string * string  -> order
     val concat : string list  -> string
     val concatWith : string  -> string list  -> string
     val explode : string  -> char list
     val extract : string * int * int option  -> string
     val fields : (char  -> bool)  -> string  -> string list
     val fromCString : String.string  -> string option
     val fromString : String.string  -> string option
     val implode : char list  -> string
     val isPrefix : string  -> string  -> bool
     val isSubstring : string  -> string  -> bool
     val isSuffix : string  -> string  -> bool
     val map : (char  -> char)  -> string  -> string
     val maxSize : int
     val size : string  -> int
     val str : char  -> string
     val sub : string * int  -> char
     val substring : string * int * int  -> string
     val toCString : string  -> String.string
     val toString : string  -> String.string
     val tokens : (char  -> bool)  -> string  -> string list
     val translate : (char  -> string)  -> string  -> string
   end
#
----
[ [[トップ |Tutorial]]| [[目次|Tutorial/000]] | [[前ページ|Tutorial/014]] | [[ 次ページ |Tutorial/015]] ]