스칼라 문자열
다음 예에서는 문자열을 상수에 할당합니다.
object Test { val greeting: String = "Hello,World!" def main(args: Array[String]) { println( greeting ) } }
위 예에서는 문자열 상수이고 유형이 String(java.lang.String)인 Greeting 변수를 정의합니다.
Scala에서 문자열 유형은 실제로 String 클래스 자체가 없는 Java String입니다.
Scala에서 String은 불변 객체이므로 객체를 수정할 수 없습니다. 즉, 문자열을 수정하면 새 문자열 개체가 생성됩니다.
그러나 배열과 같은 다른 객체는 변경 가능한 객체입니다. 다음으로 일반적으로 사용되는 java.lang.String 메소드를 소개하겠습니다.
문자열 생성
다음과 같이 문자열 인스턴스를 생성합니다.
var greeting = "Hello World!"; 或 var greeting:String = "Hello World!";
문자열 유형을 반드시 지정할 필요는 없습니다. 스칼라 컴파일러는 자동으로 문자열 유형이 문자열이라고 추론하기 때문입니다.
물론 다음 예와 같이 문자열을 문자열 유형으로 직접 선언할 수도 있습니다.
object Test { val greeting: String = "Hello, World!" def main(args: Array[String]) { println( greeting ) } }
위 코드를 실행하면 출력 결과는 다음과 같습니다.
$ scalac Test.scala $ scala Test Hello, world!
앞서 언급했듯이 문자열 개체는 변경할 수 없습니다. 수정 가능한 문자열을 생성해야 하는 경우 다음 예와 같이 문자열 빌더 클래스를 사용할 수 있습니다.
object Test { def main(args: Array[String]) { val buf = new StringBuilder; buf += 'a' buf ++= "bcdef" println( "buf is : " + buf.toString ); } }
실행 위 코드의 출력 결과는 다음과 같습니다.
$ scalac Test.scala $ scala Test buf is : abcdef
문자열 길이
length() 메서드를 사용하여 문자열 길이를 가져올 수 있습니다. :
object Test { def main(args: Array[String]) { var palindrome = "www.php.cn"; var len = palindrome.length(); println( "String Length is : " + len ); } }
위 코드를 실행하면 출력 결과는 다음과 같습니다.
$ scalac Test.scala $ scala Test String Length is : 14
String 연결
Concat() 메서드는 String 클래스에서 두 개를 연결하는 데 사용됩니다. 문자열:
string1.concat(string2);
시연 예:
scala> "php中文网官网: ".concat("www.php.cn"); res0: String = php中文网官网: www.php.cn
마찬가지로 더하기 기호(+)를 사용하여 연결할 수도 있습니다.
scala> "php中文网官网: " + " www.php.cn" res1: String = php中文网官网: www.php.cn
전체 예를 살펴보겠습니다.
object Test { def main(args: Array[String]) { var str1 = "php中文网官网:"; var str2 = "www.php.cn"; var str3 = "php中文网的 Slogan 为:"; var str4 = " php中文网"; println( str1 + str2 ); println( str3.concat(str4) ); } }
위 코드를 실행하면 출력 결과는 다음과 같습니다.
$ scalac Test.scala $ scala Test php中文网官网:www.php.cn php中文网的 Slogan 为: php中文网
형식 지정된 문자열 생성
String 클래스에서는 printf() 메서드를 사용하여 문자열 형식을 지정할 수 있습니다. String format() 메서드는 PrintStream 객체 대신 String 객체를 반환할 수 있습니다. 다음 예에서는 printf() 메서드의 사용을 보여줍니다.
object Test { def main(args: Array[String]) { var floatVar = 12.456 var intVar = 2000 var stringVar = "php中文网!" var fs = printf("浮点型变量为 " + "%f, 整型变量为 %d, 字符串为 " + " %s", floatVar, intVar, stringVar) println(fs) } }
위 코드를 실행하면 출력 결과는 다음과 같습니다.
$ scalac Test.scala $ scala Test 浮点型变量为 12.456000, 整型变量为 2000, 字符串为 php中文网!()
문자열 메서드
다음 표 목록 java .lang.String에서 일반적으로 사용되는 메소드는 Scala에서 사용할 수 있습니다:
일련 번호 | 메소드 및 설명 |
---|---|
1 | char charAt(int index) 지정된 위치의 문자를 반환 |
2 | int CompareTo(Object o) 문자열과 객체 비교 |
3 | int CompareTo(String anotherString) 두 문자열을 사전순으로 비교합니다. |
4 | int CompareToIgnoreCase(String str) 대소문자에 관계없이 사전순으로 두 문자열을 비교합니다 |
5 | String concat(String str) 지정된 문자열을 이 문자열의 끝에 연결합니다 |
6 | boolean contentEquals(StringBuffer sb) 이 문자열을 지정된 StringBuffer와 비교합니다. |
7 | static String copyValueOf(char[] data) 지정된 항목으로 돌아가기 배열 문자열 |
8 | static String copyValueOf(char[] data, int offset, int count) 지정된 배열의 문자 시퀀스를 나타내는 문자열을 반환합니다 |
9 | boolean endWith(String suffix) 이 문자열이 지정된 접미사로 끝나는지 테스트합니다 |
10 | boolean equals(Object anObject ) 이 문자열을 지정된 객체와 비교 |
11 | boolean equalsIgnoreCase(String anotherString ) 대소문자에 관계없이 이 문자열을 다른 문자열과 비교 |
12 | byte getBytes () 플랫폼의 기본 문자 집합을 사용하여 이 문자열을 바이트 시퀀스로 인코딩하고 결과를 새 바이트 배열에 저장합니다 |
13 | byte[] getBytes(String charsetName 지정된 문자 세트를 사용하여 이 문자열을 바이트 시퀀스로 인코딩하고 결과를 새 바이트 배열에 저장합니다. |
14 | void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) 이 문자열의 문자를 대상 문자 배열로 복사 |
15 | int hashCode() 이 문자열의 해시 코드를 반환합니다 |
16 | int indexOf(int ch) 이 문자열에서 지정된 문자가 처음 나타나는 인덱스를 반환합니다. |
17 | int indexOf(int ch , int fromIndex) 지정된 인덱스 시작 검색에서 이 문자열에 지정된 문자가 처음 나타나는 인덱스를 반환합니다 |
18 | int indexOf(String str) 지정된 하위 문자를 반환합니다. 이 문자열에서 문자열이 처음 나타나는 인덱스 |
19 | int indexOf(String str, int fromIndex) 첫 번째로 나타나는 인덱스를 반환합니다. 이 문자열의 지정된 하위 문자열(지정된 인덱스에서 시작) |
20 | String intern() 문자열 객체의 정규화된 표현을 반환합니다 |
21 | int lastIndexOf(int ch) 이 문자열에서 지정된 문자가 마지막으로 나타나는 인덱스를 반환합니다. |
22 | int lastIndexOf(int ch , int fromIndex) 지정된 인덱스에서 역방향 검색 시작 |
int lastIndexOf(String str) 이 문자열에서 지정된 하위 문자열이 가장 오른쪽에 나타나는 인덱스를 반환합니다. | |
int lastIndexOf(String str, int fromIndex) 이 문자열에서 지정된 하위 문자열이 마지막으로 나타나는 인덱스를 반환하고 지정된 인덱스에서 역방향 검색을 시작합니다 | |
25 | int length() 이 문자열의 길이를 반환합니다 |
26 | boolean matchs(String regex) 이 문자열이 주어진 정규 표현식과 일치하는지 여부를 알려줍니다. |
27 | boolean RegionMatches(booleanignoreCase, int toffset, String other, int ooffset, int len) 두 문자열 영역이 동일한지 테스트 |
28 | boolean RegionMatches(int toffset, String other, int ooffset, int len) 두 문자열 테스트 면적이 같은가요? |
29 | String replacement(char oldChar, char newChar) Return 치환하여 얻은 새로운 문자열 이 문자열에서 oldChar의 모든 항목을 newChar로 바꿉니다. String replacementAll(String regex, String replacement |
31 String replacementFirst(String regex, String replacement) | |
32 String[] Split(String regex) | |
33 String[] Split(String regex , intlimit) | |
34 boolean startWith( 문자열 접두사) | |
35 부울 startWith(String prefix, int toffset) | |
36 CharSequence subSequence(int BeginIndex, int endIndex) | |
37 String substring(int startIndex) | |
38 String substring(int startIndex, int endIndex) | |
39 char[ ] toCharArray() | |
40 String toLowerCase() | |
41 String toLowerCase(Locale locale) | |
42 | String toString() 이 객체 자체를 반환합니다(이미 문자열입니다! ) |
43 | String toUpperCase() 기본 로케일 규칙을 사용하여 모두 문자열의 문자는 대문자로 변환됩니다 |
44 | String toUpperCase(Locale locale) 주어진 로캘의 규칙을 사용하여 이 문자열의 모든 문자를 대문자로 변환합니다. |
45 | String Trim( ) 지정된 로캘의 규칙을 사용하여 이 문자열의 모든 문자를 대문자로 변환합니다. |
46 | 정적 String valueOf(기본 데이터 유형 x) 지정된 유형 매개변수의 문자열 표현을 반환합니다 |