D 프로그래밍-문자열

D는 다음 두 가지 유형의 문자열 표현을 제공합니다.

  • 문자 배열
  • 핵심 언어 문자열

문자 배열

다음과 같이 두 가지 형식 중 하나로 문자 배열을 나타낼 수 있습니다. 첫 번째 양식은 크기를 직접 제공하고 두 번째 양식은 "Good morning"문자열의 쓰기 가능한 복사본을 만드는 dup 메서드를 사용합니다.

char[9]  greeting1 = "Hello all"; 
char[] greeting2 = "Good morning".dup;

다음은 위의 간단한 문자 배열 형식을 사용한 간단한 예입니다.

import std.stdio;

void main(string[] args) { 
   char[9] greeting1 = "Hello all"; 
   writefln("%s",greeting1); 

   char[] greeting2 = "Good morning".dup; 
   writefln("%s",greeting2); 
}

위의 코드가 컴파일되고 실행되면 다음과 같은 결과가 생성됩니다.

Hello all 
Good morning

핵심 언어 문자열

문자열은 D의 핵심 언어에 내장되어 있습니다. 이러한 문자열은 위에 표시된 문자 배열과 상호 운용이 가능합니다. 다음 예제는 간단한 문자열 표현을 보여줍니다.

string greeting1 = "Hello all";

import std.stdio;

void main(string[] args) { 
   string greeting1 = "Hello all"; 
   writefln("%s",greeting1);  
   
   char[] greeting2 = "Good morning".dup; 
   writefln("%s",greeting2);  
   
   string greeting3 = greeting1; 
   writefln("%s",greeting3); 
}

위의 코드가 컴파일되고 실행되면 다음과 같은 결과가 생성됩니다.

Hello all 
Good morning 
Hello all

문자열 연결

D 프로그래밍에서 문자열 연결은 물결표 (~) 기호를 사용합니다.

import std.stdio;

void main(string[] args) { 
   string greeting1 = "Good"; 
   char[] greeting2 = "morning".dup; 
   
   char[] greeting3 = greeting1~" "~greeting2; 
   writefln("%s",greeting3); 
   
   string greeting4 = "morning"; 
   string greeting5 = greeting1~" "~greeting4; 
   writefln("%s",greeting5); 
}

위의 코드가 컴파일되고 실행되면 다음과 같은 결과가 생성됩니다.

Good morning 
Good morning

문자열 길이

문자열 길이 (바이트)는 길이 함수를 사용하여 검색 할 수 있습니다.

import std.stdio;  

void main(string[] args) { 
   string greeting1 = "Good"; 
   writefln("Length of string greeting1 is %d",greeting1.length); 
   
   char[] greeting2 = "morning".dup;        
   writefln("Length of string greeting2 is %d",greeting2.length); 
}

위의 코드가 컴파일되고 실행되면 다음과 같은 결과가 생성됩니다.

Length of string greeting1 is 4 
Length of string greeting2 is 7

문자열 비교

문자열 비교는 D 프로그래밍에서 매우 쉽습니다. 문자열 비교에 ==, <및> 연산자를 사용할 수 있습니다.

import std.stdio; 
 
void main() { 
   string s1 = "Hello"; 
   string s2 = "World";
   string s3 = "World";
   
   if (s2 == s3) { 
      writeln("s2: ",s2," and S3: ",s3, "  are the same!"); 
   }
   
   if (s1 < s2) { 
      writeln("'", s1, "' comes before '", s2, "'."); 
   } else { 
      writeln("'", s2, "' comes before '", s1, "'."); 
   }
}

위의 코드가 컴파일되고 실행되면 다음과 같은 결과가 생성됩니다.

s2: World and S3: World are the same! 
'Hello' comes before 'World'.

문자열 바꾸기

string []을 사용하여 문자열을 바꿀 수 있습니다.

import std.stdio; 
import std.string; 
 
void main() {
   char[] s1 = "hello world ".dup; 
   char[] s2 = "sample".dup;
   
   s1[6..12] = s2[0..6]; 
   writeln(s1);
}

위의 코드가 컴파일되고 실행되면 다음과 같은 결과가 생성됩니다.

hello sample

색인 방법

다음 예제에서는 indexOf 및 lastIndexOf를 포함하는 문자열의 하위 문자열 위치에 대한 인덱스 메서드를 설명합니다.

import std.stdio;
import std.string;

void main() { 
   char[] s1 = "hello World ".dup; 
    
   writeln("indexOf of llo in hello is ",std.string.indexOf(s1,"llo")); 
   writeln(s1); 
   writeln("lastIndexOf of O in hello is " ,std.string.lastIndexOf(s1,"O",CaseSensitive.no));
}

위의 코드가 컴파일되고 실행되면 다음과 같은 결과가 생성됩니다.

indexOf.of llo in hello is 2 
hello World  
lastIndexOf of O in hello is 7

케이스 처리

케이스 변경에 사용되는 방법은 다음 예와 같습니다.

import std.stdio;
import std.string;

void main() { 
   char[] s1 = "hello World ".dup; 
   writeln("Capitalized string of s1 is ",capitalize(s1)); 
    
   writeln("Uppercase string of s1 is ",toUpper(s1)); 
    
   writeln("Lowercase string of s1 is ",toLower(s1));   
}

위의 코드가 컴파일되고 실행되면 다음과 같은 결과가 생성됩니다.

Capitalized string of s1 is Hello world  
Uppercase string of s1 is HELLO WORLD  
Lowercase string of s1 is hello world

문자 제한

문자열의 문자열 다시 문자열은 다음 예제에 표시됩니다.

import std.stdio;
import std.string;

void main() { 
   string s = "H123Hello1";  
   
   string result = munch(s, "0123456789H"); 
   writeln("Restrict trailing characters:",result);  
   
   result = squeeze(s, "0123456789H"); 
   writeln("Restrict leading characters:",result); 
   
   s = "  Hello World  "; 
   writeln("Stripping leading and trailing whitespace:",strip(s)); 
}

위의 코드가 컴파일되고 실행되면 다음과 같은 결과가 생성됩니다.

Restrict trailing characters:H123H 
Restrict leading characters:ello1 
Stripping leading and trailing whitespace:Hello World