Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4)

Side by Side Diff: sdk/lib/core/string.dart

Issue 677013002: Make dart2js String.split match the VM version. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Tweak docs. Created 6 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 part of dart.core; 5 part of dart.core;
6 6
7 /** 7 /**
8 * A sequence of characters. 8 * A sequence of characters.
9 * 9 *
10 * A string can be either single or multiline. Single line strings are 10 * A string can be either single or multiline. Single line strings are
(...skipping 445 matching lines...) Expand 10 before | Expand all | Expand 10 after
456 * 456 *
457 * pigLatin(String words) => words.replaceAllMapped( 457 * pigLatin(String words) => words.replaceAllMapped(
458 * new RegExp(r'\b(\w*?)([aeiou]\w*)', caseSensitive: false), 458 * new RegExp(r'\b(\w*?)([aeiou]\w*)', caseSensitive: false),
459 * (Match m) => "${m[2]}${m[1]}${m[1].isEmpty ? 'way' : 'ay'}"); 459 * (Match m) => "${m[2]}${m[1]}${m[1].isEmpty ? 'way' : 'ay'}");
460 * 460 *
461 * pigLatin('I have a secret now!'); // 'Iway avehay away ecretsay ownay!' 461 * pigLatin('I have a secret now!'); // 'Iway avehay away ecretsay ownay!'
462 */ 462 */
463 String replaceAllMapped(Pattern from, String replace(Match match)); 463 String replaceAllMapped(Pattern from, String replace(Match match));
464 464
465 /** 465 /**
466 * Splits the string at matches of [pattern]. Returns 466 * Splits the string at matches of [pattern] and returns a list of substrings.
467 * a list of substrings.
468 * 467 *
469 * Splitting with an empty string pattern (`''`) splits at UTF-16 code unit 468 * Finds all the matches of `pattern` in this string,
470 * boundaries and not at rune boundaries: 469 * and returns the list of the substrings between the matches.
470 *
471 * var string = "Hello world!";
472 * string.split(" "); // ['Hello', 'world!'];
473 *
474 * Empty matches at the beginning and end of the strings are ignored,
475 * and so are empty matches right after another match.
476 *
477 * var string = "abba";
478 * string.split(new RegExp(r"b*")); // ['a', 'a']
479 * // not ['', 'a', 'a', '']
480 *
481 * If this string is empty, the result is an empty list if `pattern` matches
482 * the empty string, and it is `[""]` if the pattern doesn't match.
483 *
484 * var string = '';
485 * string.split(''); // []
486 * string.split("a"); // ['']
487 *
488 * Splitting with an empty pattern splits the string into single-code unit
489 * strings.
471 * 490 *
472 * var string = 'Pub'; 491 * var string = 'Pub';
473 * string.split(''); // ['P', 'u', 'b'] 492 * string.split(''); // ['P', 'u', 'b']
474 * 493 *
475 * string.codeUnits.map((unit) { 494 * string.codeUnits.map((unit) {
476 * return new String.fromCharCode(unit); 495 * return new String.fromCharCode(unit);
477 * }).toList(); // ['P', 'u', 'b'] 496 * }).toList(); // ['P', 'u', 'b']
478 * 497 *
498 * Splitting happens at UTF-16 code unit boundaries,
499 * and not at rune boundaries:
500 *
479 * // String made up of two code units, but one rune. 501 * // String made up of two code units, but one rune.
480 * string = '\u{1D11E}'; 502 * string = '\u{1D11E}';
481 * string.split('').length; // 2 503 * string.split('').length; // 2 surrogate values
482 * 504 *
483 * You should [map] the runes unless you are certain that the string is in 505 * To get a list of strings containing the individual runes of a string,
484 * the basic multilingual plane (meaning that each code unit represents a 506 * you should not use split. You can instead map each rune to a string
485 * rune): 507 * as follows:
486 * 508 *
487 * string.runes.map((rune) => new String.fromCharCode(rune)); 509 * string.runes.map((rune) => new String.fromCharCode(rune)).toList();
488 */ 510 */
489 List<String> split(Pattern pattern); 511 List<String> split(Pattern pattern);
490 512
491 /** 513 /**
492 * Splits the string, converts its parts, and combines them into a new 514 * Splits the string, converts its parts, and combines them into a new
493 * string. 515 * string.
494 * 516 *
495 * [pattern] is used to split the string into parts and separating matches. 517 * [pattern] is used to split the string into parts and separating matches.
496 * 518 *
497 * Each match is converted to a string by calling [onMatch]. If [onMatch] 519 * Each match is converted to a string by calling [onMatch]. If [onMatch]
(...skipping 244 matching lines...) Expand 10 before | Expand all | Expand 10 after
742 _position = position - 1; 764 _position = position - 1;
743 _currentCodePoint = _combineSurrogatePair(prevCodeUnit, codeUnit); 765 _currentCodePoint = _combineSurrogatePair(prevCodeUnit, codeUnit);
744 return true; 766 return true;
745 } 767 }
746 } 768 }
747 _position = position; 769 _position = position;
748 _currentCodePoint = codeUnit; 770 _currentCodePoint = codeUnit;
749 return true; 771 return true;
750 } 772 }
751 } 773 }
OLDNEW
« no previous file with comments | « sdk/lib/_internal/compiler/js_lib/regexp_helper.dart ('k') | tests/corelib/string_split_reg_exp_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698