Index: sdk/lib/core/string.dart |
diff --git a/sdk/lib/core/string.dart b/sdk/lib/core/string.dart |
index e4b4c73e6dc2ccd5d65b52c61c8ff0a13f987280..7f2dcbd48b4fc51306c3fcf896c0c1c91a876b14 100644 |
--- a/sdk/lib/core/string.dart |
+++ b/sdk/lib/core/string.dart |
@@ -10,13 +10,25 @@ part of dart.core; |
* scalar character codes accessible through the [charCodeAt] or the |
* [charCodes] method. |
*/ |
-abstract class String implements Comparable, Pattern, Sequence<String> { |
+abstract class String implements Comparable, Pattern { |
/** |
* Allocates a new String for the specified [charCodes]. |
*/ |
external factory String.fromCharCodes(List<int> charCodes); |
/** |
+ * Allocates a new String for the specified [charCode]. |
+ * |
+ * The built string is of [length] one, if the [charCode] lies inside the |
+ * basic multilingual plane (plane 0). Otherwise the [length] is 2 and |
+ * the code units form a surrogate pair. |
+ */ |
+ factory String.character(int charCode) { |
+ List<int> charCodes = new List<int>.fixedLength(1, fill: charCode); |
+ return new String.fromCharCodes(charCodes); |
+ } |
+ |
+ /** |
* Gets the character (as [String]) at the given [index]. |
*/ |
String operator [](int index); |
@@ -72,6 +84,22 @@ abstract class String implements Comparable, Pattern, Sequence<String> { |
String concat(String other); |
/** |
+ * Returns a slice of this string from [startIndex] to [endIndex]. |
+ * |
+ * If [startIndex] is omitted, it defaults to the start of the string. |
+ * |
+ * If [endIndex] is omitted, it defaults to the end of the string. |
+ * |
+ * If either index is negative, it's taken as a negative index from the |
+ * end of the string. Their effective value is computed by adding the |
+ * negative value to the [length] of the string. |
+ * |
+ * The effective indices, after must be non-negative, no greater than the |
+ * length of the string, and [endIndex] must not be less than [startIndex]. |
+ */ |
+ String slice([int startIndex, int endIndex]); |
+ |
+ /** |
* Returns a substring of this string in the given range. |
* [startIndex] is inclusive and [endIndex] is exclusive. |
*/ |
@@ -102,9 +130,19 @@ abstract class String implements Comparable, Pattern, Sequence<String> { |
/** |
* Returns a new string where all occurences of [from] in this string |
- * are replaced with [to]. |
+ * are replaced with [replace]. |
*/ |
- String replaceAll(Pattern from, String to); |
+ String replaceAll(Pattern from, var replace); |
+ |
+ /** |
+ * Returns a new string where all occurences of [from] in this string |
+ * are replaced with a [String] depending on [replace]. |
+ * |
+ * |
+ * The [replace] function is called with the [Match] generated |
+ * by the pattern, and its result is used as replacement. |
+ */ |
+ String replaceAllMapped(Pattern from, String replace(Match match)); |
/** |
* Splits the string around matches of [pattern]. Returns |
@@ -118,6 +156,23 @@ abstract class String implements Comparable, Pattern, Sequence<String> { |
List<String> splitChars(); |
/** |
+ * Splits the string on the [pattern], then converts each part and each match. |
+ * |
+ * The pattern is used to split the string into parts and separating matches. |
+ * |
+ * Each match is converted to a string by calling [onMatch]. If [onMatch] |
+ * is omitted, the matched string is used. |
+ * |
+ * Each non-matched part is converted by a call to [onNonMatch]. If |
+ * [onNonMatch] is omitted, the non-matching part is used. |
+ * |
+ * Then all the converted parts are combined into the resulting string. |
+ */ |
+ String splitMapJoin(Pattern pattern, |
+ {String onMatch(Match match), |
+ String onNonMatch(String nonMatch)}); |
+ |
+ /** |
* Returns a list of the scalar character codes of this string. |
*/ |
List<int> get charCodes; |