(yet) Flutter Dart String

velvelog의 VELVEL LOG·2022년 11월 20일
0

플러터(Dart)의 String에 대해서 자세히 파헤쳐보자.

Dart > dart:core > String abstract class

출처 - api.dart.dev

https://api.dart.dev/stable/2.9.1/dart-core/String-class.html#constructors

00

A sequence of UTF-16 code units.

Strings are mainly used to represent text.
A character may be represented by multiple code points, each code point consisting of one or two code units. For example the Papua New Guinea flag character requires four code units to represent two code points, but should be treated like a single character: "🇵🇬". Platforms that do not support the flag character may show the letters "PG" instead. If the code points are swapped, it instead becomes the Guadeloupe flag "🇬🇵" ("GP").

UTF-16 코드 유닛의 시퀀스입니다.
문자열은 주로 텍스트를 나타내는 데 사용됩니다.

문자는 하나 또는 두 개의 코드 단위로 구성된 여러 코드 포인트로 표현될 수 있다. (03에서 설명)
예를 들어 파푸아뉴기니의 국기 문자는 <두 개의 코드 포인트 : [127477, 127468]>를
나타내기 위해 <네 개의 코드 단위 : [55356, 56821, 55356, 56812]>가 필요하지만
"🇵🇬"처럼 취급되어야 한다. (---> 03에서 설명)

플래그 문자를 지원하지 않는 플랫폼은 "PG"라는 문자를 대신 표시할 수 있다.
코드 포인트가 스왑되면 과들루프 플래그 "🇬🇵"(GP)가 된다.

01

A string can be either single or multiline. Single line strings are written using matching single or double quotes, and multiline strings are written using triple quotes. The following are all valid Dart strings:

문자열은 단일 행 또는 다중 행일 수 있습니다.
단일 행 문자열은 일치하는 단일 또는 이중 따옴표를 사용하여 작성되고
다중 행 문자열은 삼중 따옴표를 사용하여 작성됩니다.
다음은 모두 유효한 Dart 문자열입니다.

'Single quotes';
"Double quotes";
'Double quotes in "single" quotes';
"Single quotes in 'double' quotes";

'''A
multiline
string''';

"""
Another
multiline
string""";

02

Strings are immutable. Although you cannot change a string, you can perform an operation on a string and assign the result to a new string:
문자열은 불변입니다. 문자열을 변경할 수는 없지만 문자열에 대한 작업을 수행하고 결과를 새 문자열에 할당할 수 있습니다.

var string = 'Dart is fun';
var newString = string.substring(0, 5);

You can use the plus (+) operator to concatenate strings:
더하기(+) 연산자를 사용하여 문자열을 연결할 수 있습니다.

'Dart ' + 'is ' + 'fun!'; // 'Dart is fun!'

You can also use adjacent string literals for concatenation:
인접 문자열 리터럴을 연결에 사용할 수도 있습니다.

var str = 'Dart ' 'is ' 'fun!';  
print(str); //Dart is fun!

You can use tointerpolatethevalueofDartexpressionswithinstrings.Thecurlybracescanbeomittedwhenevaluatingidentifiers:{} to interpolate the value of Dart expressions within strings. The curly braces can be omitted when evaluating identifiers:{}을(를) 사용하여 문자열 내에서 Dart 식의 값을 보간할 수 있습니다. 식별자를 평가할 때는 중괄호를 생략할 수 있습니다.

string = 'dartlang';
'$string has ${string.length} letters'; // 'dartlang has 8 letters'

03

A string is represented by a sequence of Unicode UTF-16 code units accessible through the codeUnitAt or the codeUnits members:
문자열은 codeUnitAt 또는 codeUnits 멤버를 통해 액세스할 수 있는 유니코드 UTF-16 코드 단위의 시퀀스로 표시됩니다.

string = 'Dart';
string.codeUnitAt(0); // 68
string.codeUnits;     // [68, 97, 114, 116]

String test = '🇵🇬';
print(test.codeUnits); // [55356, 56821, 55356, 56812]

The string representation of code units is accessible through the index operator:
코드 단위의 문자열 표현은 인덱스 연산자를 통해 접근할 수 있다.

string[0];  // 'D'

The characters of a string are encoded in UTF-16. Decoding UTF-16, which combines surrogate pairs, yields Unicode code points. Following a similar terminology to Go, we use the name 'rune' for an integer representing a Unicode code point. Use the runes property to get the runes of a string:
문자열의 문자는 UTF-16으로 인코딩됩니다.
대리 쌍을 결합한 UTF-16을 디코딩하면 유니코드 코드 포인트가 생성됩니다.
Go와 유사한 용어에 따라 유니코드 코드 포인트를 나타내는 정수에 'rune'라는 이름을 사용합니다.
룬 속성을 사용하여 문자열의 룬을 가져옵니다.

var string = 'Dart';
print(string.codeUnitAt(0)); // 68
print(string.codeUnits);  // [68, 97, 114, 116]
print(string.runes.toList()); //[68, 97, 114, 116]

String test = '🇵🇬';
print(test.codeUnits); // [55356, 56821, 55356, 56812]
print(test.runes.toList()); //[127477, 127468]
  

For a character outside the Basic Multilingual Plane (plane 0) that is composed of a surrogate pair, runes combines the pair and returns a single integer. For example, the Unicode character for a musical G-clef ('𝄞') with rune value 0x1D11E consists of a UTF-16 surrogate pair: 0xD834 and 0xDD1E. Using codeUnits returns the surrogate pair, and using runes returns their combined value:
대리 쌍으로 구성된 기본 다국어 평면(평면 0) 외부의 문자에 대해 룬은 쌍을 결합하고 단일 정수를 반환합니다. 예를 들어 룬 값이 0x1D11E인 음자리표('𝄞')의 유니코드 문자는 UTF-16 대리 쌍인 0xD834 및 0xDD1E로 구성됩니다. codeUnits를 사용하면 서로게이트-페어가 반환되고 runes를 사용하면 결합된 값이 반환됩니다.

var clef = '\u{1D11E}';
clef.codeUnits;         // [0xD834, 0xDD1E]
clef.runes.toList();    // [0x1D11E]

04

The String class can not be extended or implemented. Attempting to do so yields a compile-time error.
String 클래스는 확장하거나 구현할 수 없습니다. 그렇게 하려고 하면 컴파일 시간 오류가 발생합니다.

05 - Other resources

See StringBuffer to efficiently build a string incrementally. See RegExp to work with regular expressions.
문자열을 점진적으로 효율적으로 작성하려면 StringBuffer를 참조하십시오. 정규식으로 작업하려면 RegExp를 참조하십시오.
StringBuffer - https://api.dart.dev/stable/2.9.1/dart-core/StringBuffer-class.html
RegExp - https://api.dart.dev/stable/2.9.1/dart-core/RegExp-class.html

Also see: 또한 다음을 참조하십시오.

Dart Cookbook for String examples and recipes.
https://dart.dev/samples#strings

Dart Up and Running
https://dart.dev/guides/libraries/library-tour#strings-and-regular-expressions

Implemented types 구현된 유형입니다.
Comparable < String >
https://api.dart.dev/stable/2.9.1/dart-core/Comparable-class.html

Pattern
https://api.dart.dev/stable/2.9.1/dart-core/Pattern-class.html

06 - Constructors

String.fromCharCode(int charCode)
Allocates a new String for the specified charCode. [...]
지정된 문자열에 새 문자열을 할당합니다.
https://api.dart.dev/stable/2.9.1/dart-core/String/String.fromCharCode.html
factory

String.fromCharCodes(Iterable< int > charCodes, [int start = 0, int? end])
Allocates a new String for the specified charCodes. [...]
지정된 문자열에 새 문자열을 할당합니다.
https://api.dart.dev/stable/2.9.1/dart-core/String/String.fromCharCodes.html
factory

String.fromEnvironment(String name, {String defaultValue: ""})
Returns the string value of the environment declaration name. [...]
환경 선언의 문자열 값을 반환합니다.
https://api.dart.dev/stable/2.9.1/dart-core/String/String.fromEnvironment.html
const
factory

07 - Properties

codeUnits → List< int >
Returns an unmodifiable list of the UTF-16 code units of this string.
이 문자열의 UTF-16 코드 단위를 수정할 수 없는 목록을 반환합니다.
read-only

hashCode → int
Returns a hash code derived from the code units of the string. [...]
문자열의 코드 단위에서 파생된 해시 코드를 반환합니다.
https://api.dart.dev/stable/2.9.1/dart-core/String/hashCode.html
read-only, override

String str = 'A';
print(str.hashCode); // 33620976
str = 'B';
print(str.hashCode); // 389312086
str = 'AB';
print(str.hashCode); // 402450078

isEmpty → bool
Returns true if this string is empty.
이 문자열이 비어 있으면 true를 반환합니다.
read-only

String str = '';  
print(str.isEmpty); // true
print(str.isNotEmpty); // false

isNotEmpty → bool
Returns true if this string is not empty.
이 문자열이 비어 있지 않으면 true를 반환합니다.
read-only

length → int
The length of the string. [...]
read-only

runes → Runes
Returns an Iterable of Unicode code-points of this string. [...]
이 문자열의 유니코드 코드 포인트의 Iterable을 반환합니다.
https://api.dart.dev/stable/2.9.1/dart-core/String/runes.html
read-only

runtimeType → Type
A representation of the runtime type of the object.
개체의 런타임 유형을 나타냅니다.
read-only, inherited

String str = 'A';
print(str.runtimeType); // String
var value = 1;
print(value.runtimeType); // int

08 - Method

allMatches(String string, [int start = 0]) → Iterable
Match this pattern against the string repeatedly. [...]
이 패턴을 문자열에 대해 반복적으로 일치시킵니다.
https://api.dart.dev/stable/2.9.1/dart-core/Pattern/allMatches.html
inherited

codeUnitAt(int index) → int
Returns the 16-bit UTF-16 code unit at the given index.
주어진 위치에서 16비트 UTF-16 코드 단위를 반환합니다.

compareTo(String other) → int
Compares this string to other. [...]
이 문자열을 다른 문자열과 비교합니다.
https://api.dart.dev/stable/2.9.1/dart-core/String/compareTo.html
override

  String strA = 'A';
  String strB = 'B';
  
  print(strA.compareTo(strB)); //-1 (같지 않을 때 / this가 other보다 상위 정렬)
  
  strB = 'A';
  print(strA.compareTo(strB)); //0 (this와 other가 같을때)
  
  strA = 'C';
  print(strA.compareTo(strB)); //1 (같지 않을 때 / this보다 other가 상위 정렬)

contains(Pattern other, [int startIndex = 0]) → bool
Returns true if this string contains a match of other: [...]

endsWith(String other) → bool
Returns true if this string ends with other. For example: [...]

indexOf(Pattern pattern, [int start = 0]) → int
Returns the position of the first match of pattern in this string, starting at start, inclusive: [...]

lastIndexOf(Pattern pattern, [int? start]) → int
Returns the starting position of the last match pattern in this string, searching backward starting at start, inclusive: [...]

matchAsPrefix(String string, [int start = 0]) → Match?
Match this pattern against the start of string. [...]
inherited

noSuchMethod(Invocation invocation) → dynamic
Invoked when a non-existent method or property is accessed. [...]
inherited

padLeft(int width, [String padding = ' ']) → String
Pads this string on the left if it is shorter than width. [...]

padRight(int width, [String padding = ' ']) → String
Pads this string on the right if it is shorter than width. [...]

replaceAll(Pattern from, String replace) → String
Replaces all substrings that match from with replace. [...]

replaceAllMapped(Pattern from, String replace(Match match)) → String
Replace all substrings that match from by a string computed from the match. [...]

replaceFirst(Pattern from, String to, [int startIndex = 0]) → String
Returns a new string in which the first occurrence of from in this string is replaced with to, starting from startIndex: [...]

replaceFirstMapped(Pattern from, String replace(Match match), [int startIndex = 0]) → String
Replace the first occurrence of from in this string. [...]

replaceRange(int start, int? end, String replacement) → String
Replaces the substring from start to end with replacement. [...]

split(Pattern pattern) → List< String >
Splits the string at matches of pattern and returns a list of substrings. [...]

splitMapJoin(Pattern pattern, {String onMatch(Match), String onNonMatch(String)}) → String
Splits the string, converts its parts, and combines them into a new string. [...]

startsWith(Pattern pattern, [int index = 0]) → bool
Returns true if this string starts with a match of pattern. [...]

substring(int startIndex, [int? endIndex]) → String
Returns the substring of this string that extends from startIndex, inclusive, to endIndex, exclusive. [...]

toLowerCase() → String
Converts all characters in this string to lower case. If the string is already in all lower case, this method returns this. [...]

toString() → String
Returns a string representation of this object.
inherited

toUpperCase() → String
Converts all characters in this string to upper case. If the string is already in all upper case, this method returns this. [...]

trim() → String
Returns the string without any leading and trailing whitespace. [...]

trimLeft() → String
Returns the string without any leading whitespace. [...]

trimRight() → String
Returns the string without any trailing whitespace. [...]

profile
flutter, dart,

0개의 댓글