The String 구조
The String 구조
이 구조는 문자열 주입식(subsequence) 조작과 변환, 검색을 위한 유틸리티를 제공해요.
출처: 문서
본문
시놉시스 (Synopsis)
signature STRING
structure String :> STRING
where type string = string
where type string = CharVector.vector
where type char = Char.char
structure WideString :> STRING (* OPTIONAL *)
where type string = WideCharVector.vector
where type char = WideChar.char
인터페이스 (Interface)
eqtype string
eqtype char
val maxSize : int
val size : string -> int
val sub : string * int -> char
val extract : string * int * int option -> string
val substring : string * int * int -> string
val ^ : string * string -> string
val concat : string list -> string
val concatWith : string -> string list -> string
val str : char -> string
val implode : char list -> string
val explode : string -> char list
val map : (char -> char) -> string -> string
val translate : (char -> string) -> string -> string
val tokens : (char -> bool) -> string -> string list
val fields : (char -> bool) -> string -> string list
val isPrefix : string -> string -> bool
val isSubstring : string -> string -> bool
val isSuffix : string -> string -> bool
val compare : string * string -> order
val collate : (char * char -> order)
-> string * string -> order
val < : string * string -> bool
val <= : string * string -> bool
val > : string * string -> bool
val >= : string * string -> bool
val toString : string -> String.string
val scan : (char, 'a) StringCvt.reader
-> (string, 'a) StringCvt.reader
val fromString : String.string -> string option
val toCString : string -> String.string
val fromCString : String.string -> string option
설명 (Description)
val maxSize : int
size s는 s의 길이, maxSize는 생성 가능한 최대 문자열 길이예요.
size s
substring (s, start, len)은 substring 타입으로 부분 문자열을 돌려줘요.
sub (s, i)
extract (s, start, len)은 String 타입으로 부분 문자열을 돌려줘요.
extract (s, i, NONE)
concat은 문자열 목록을 하나로 이어요.
extract (s, i, SOME j)
map·implode·explode는 문자 변환이나 목록 변환을 해요.
substring (s, i, j)
isPrefix·isSubstring·isSuffix는 문자열 포함 관계를 검사해요.
s ^ t
token·fields·tokens는 구분자로 문자열을 나눠요.
concat l
compare와 비교 연산을 제공해요.
concatWith s l
리스트 l의 문자열들을 문자열 s를 구분자로 사용해 이어 붙여 돌려줘요. 결과 문자열의 크기가 maxSize보다 크면 Size를 발생시켜요.
str c
문자 c를 담은 크기 1의 문자열이에요.
implode l
리스트 l의 문자들을 담은 문자열을 만들어요. concat (List.map str l)과 동등해요. 결과 문자열의 크기가 maxSize보다 크면 Size를 발생시켜요.
explode s
문자열 s의 문자들의 리스트예요.
map f s
s의 각 요소에 왼쪽에서 오른쪽으로 f를 적용해 결과 문자열을 돌려줘요. implode(List.map f (explode s))와 동등해요.
translate f s
s의 각 문자를 f로 매핑해 s에서 생성된 문자열을 돌려줘요. concat(List.map f (explode s))와 동등해요.
tokens f s
fields f s
이 함수들은 s에서 왼쪽에서 오른쪽으로 파생된 토큰 또는 필드 리스트를 각각 돌려줘요. 토큰은 구분자를 포함하지 않는 비어 있지 않은 s의 최대 부분 문자열이에요. 필드는 구분자를 포함하지 않는 (아마 빈) s의 최대 부분 문자열이에요. 두 경우 모두 구분자는 술어 f를 만족하는 문자예요. 두 토큰 사이에는 구분자가 여러 개 있을 수 있는 반면, 두 필드 사이에는 정확히 하나의 구분자가 있어요. 예를 들어 유일한 구분자가 문자 #"|"라면, 문자열 "|abc||def"는 "abc"와 "def" 두 토큰을 포함하는 반면 "", "abc", "", "def" 네 필드를 포함해요.
isPrefix s1 s2
isSubstring s1 s2
isSuffix s1 s2
이 함수들은 문자열 s1이 문자열 s2의 접두사, 부분 문자열, 접미사(각각)이면 true를 돌려줘요. 빈 문자열은 어떤 문자열의 접두사·부분 문자열·접미사이고, 어떤 문자열도 자기 자신의 접두사·부분 문자열·접미사라는 점에 유의하세요.
compare (s, t)
문자에 Char.compare 순서를 사용해 두 문자열을 사전식으로 비교해요. s가 t보다 작으면 LESS, 같으면 EQUAL, 크면 GREATER를 돌려줘요.
collate f (s, t)
문자에 대한 주어진 순서 f를 사용해 두 문자열을 사전식으로 비교해요.
val < : string * string -> bool
val <= : string * string -> bool
val > : string * string -> bool
val >= : string * string -> bool
이 함수들은 char 타입의 기본 순서를 사용해 두 문자열을 사전식으로 비교해요.
toString s
인쇄할 수 없는 문자를 SML 이스케이프 시퀀스로 대체한 s에 해당하는 문자열을 돌려줘요. translate Char.toString s와 동등해요.
scan getc strm
fromString s
이 함수들은 문자 소스를 인쇄 가능한 문자 시퀀스로 스캔하며 SML 이스케이프 시퀀스를 해당 문자로 변환해요. 앞부분 공백은 건너뛰지 않아요. 성공적으로 스캔할 수 있는 만큼 많은 문자를 돌려주며, 소스 끝이나 인쇄할 수 없는 문자(즉 isPrint를 만족하지 않는 문자)에 도달하거나 잘못된 이스케이프 시퀀스를 만나면 멈춰요. fromString은 나머지 문자를 무시하고, scan은 나머지 문자를 스트림의 나머지로 돌려줘요. fromString 함수는 StringCvt.scanString scan과 동등해요. 첫 문자가 인쇄할 수 없거나 잘못된 이스케이프 시퀀스로 시작하는 등 변환이 불가능하면 NONE을 돌려줘요. 단 fromString ""은 SOME("")을 돌려준다는 점에 유의하세요. 허용되는 이스케이프 시퀀스에 대한 자세한 내용은 CHAR.fromString 항목을 참고하세요. SML 소스는 변환 중 무시되는 이스케이프된 형식 시퀀스도 허용해요. 규칙은 입력의 어떤 접두부라도 이스케이프된 형식 시퀀스를 포함해 성공적으로 스캔되면 어떤 문자열을 돌려준다는 거예요. 입력의 접두부를 전혀 스캔할 수 없는 경우에만 NONE을 돌려줘요. 다음은 샘플 변환 몇 가지예요: 입력 문자열 s fromString s "\q" NONE "a^D" SOME "a" "a\ \\q" SOME "a" "\ \" SOME "" "" SOME "" "\ ^D" SOME "" "\ a" NONE 구현 참고: fromString "" = SOME "", fromString "\ ^D" = SOME "", fromString "^D" = NONE 같은 특수한 경우 때문에 이 함수들은 CHAR.scan의 단순한 반복 적용으로 구현할 수 없어요.
toCString s
인쇄할 수 없는 문자를 C 이스케이프 시퀀스로 대체한 s에 해당하는 문자열을 돌려줘요. translate Char.toCString s와 동등해요.
fromCString s
문자열 s를 C 언어의 문자열로 스캔하며 C 이스케이프 시퀀스를 해당 문자로 변환해요. C 이스케이프 시퀀스를 사용한다는 점을 제외하면 의미는 위 fromString과 동일해요 (ISO C 표준 ISO/IEC 9899:1990[CITE] 참조). 허용되는 이스케이프 시퀀스에 대한 자세한 내용은 CHAR.fromCString 항목을 참고하세요. fromCString은 이스케이프되지 않은 작은따옴표 문자는 받아들이지만, 이스케이프되지 않은 큰따옴표 문자는 받아들이지 않는다는 점에 유의하세요.## 더 알아보기 (Learn more)
- [ Top | Parent | Contents | Index | Root ] Generated April 12
- 2004 Last Modified October 17
- 2000 Comments to John Reppy. This document may be distributed freely over the internet as long as the copyright notice and license terms below are prominently displayed within every machine-readable copy. Copyright © 2004 AT&T and Lucent Technologies. All rights reserved. Permission is granted for internet users to make one paper copy for their own personal use. Further hardcopy reproduction is strictly prohibited. Permission to distribute the HTML document electronically on any medium other than the internet must be requested from the copyright holders by contacting the editors. Printed versions of the SML Basis Manual are available from Cambridge University Press. To order
- please visit www.cup.org (North America) or www.cup.cam.ac.uk (outside North America).