수색…
비고
- D의 문자열은 변경 불가능합니다. in-place를 편집하려면
.dup
를 사용하여 가변char
배열을 만듭니다.
문자열 반전
string
은 alias string = immutable(char)[];
으로 정의됩니다. alias string = immutable(char)[];
: 뒤집을 수 있기 전에 dup
을 사용하여 가변 char 배열을 만들 필요가있다.
import std.stdio;
import std.string;
int main() {
string x = "Hello world!";
char[] x_rev = x.dup.reverse;
writeln(x_rev); // !dlrow olleH
return 0;
}
빈 문자열 또는 널 문자열 테스트
빈 문자열
빈 문자열이 null이 아니지만 길이가 0입니다.
string emptyString = "";
// an empty string is not null...
assert(emptyString !is null);
// ... but it has zero lenght
assert(emptyString.length == 0);
널 문자열
string nullString = null;
널 문자열은 null입니다 (De Lapalisse).
assert(nullString is null);
그러나 C #과 달리 null 문자열의 길이를 읽으면 오류가 발생하지 않습니다.
assert(nullString.length == 0);
assert(nullString.empty);
빈 또는 null 테스트
if (emptyOrNullString.length == 0) {
}
// or
if (emptyOrNullString.length) {
}
// or
import std.array;
if (emptyOrNullString.empty) {
}
null에 대한 테스트
if (nullString is null) {
}
참고 문헌
문자열을 ubyte []로 변환하고 그 반대의 경우도 마찬가지입니다.
String to immutable ubyte[]
string s = "unogatto";
immutable(ubyte[]) ustr = cast(immutable(ubyte)[])s;
assert(typeof(ustr).stringof == "immutable(ubyte[])");
assert(ustr.length == 8);
assert(ustr[0] == 0x75); //u
assert(ustr[1] == 0x6e); //n
assert(ustr[2] == 0x6f); //o
assert(ustr[3] == 0x67); //g
assert(ustr[7] == 0x6f); //o
String to ubyte[]
string s = "unogatto";
ubyte[] mustr = cast(ubyte[])s;
assert(typeof(mustr).stringof == "ubyte[]");
assert(mustr.length == 8);
assert(mustr[0] == 0x75);
assert(mustr[1] == 0x6e);
assert(mustr[2] == 0x6f);
assert(mustr[3] == 0x67);
assert(mustr[7] == 0x6f);
ubyte[]
를 문자열로 ubyte[]
ubyte[] stream = [ 0x75, 0x6e, 0x6f, 0x67];
string us = cast(string)stream;
assert(us == "unog");
참고 문헌
Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow