Google Dart: Dart strrev() function

2019-09-07 10:22发布

问题:

I'd like to know if there's any Dart function like PHP's strrev(). If not, could you please show my any source code how to make it on my own?

Thank you.

回答1:

I haven't found one in the API, as a brand new Dart user (as of this afternoon). However, reversing a string is pretty easy to do in any language. Here's the typical O(n) solution in Dart form:

String reverse(String s) {
  var chars = s.splitChars();
  var len   = s.length - 1;
  var i     = 0;

  while (i < len) {
    var tmp = chars[i];
    chars[i] = chars[len];
    chars[len] = tmp;
    i++;
    len--;
  }

  return Strings.concatAll(chars);
}

void main() {
  var s = "dog";
  print(s);
  print(reverse(s));
}


回答2:

Lists can be reversed, so you can use this to reverse a String as well:

new String.fromCharCodes("input".charCodes.reversed.toList());


回答3:

May be a standardized reverse() method will be implemented in future in List (dart issue 2804), the following is about 8 to 10 times faster than the previous typical solution:

String reverse(String s) {
  // null or empty
  if (s == null|| s.length == 0)
    return s;
  List<int> charCodes = new List<int>();
  for (int i = s.length-1; i>= 0; i-- )
    charCodes.addLast(s.charCodeAt(i)) ;
  return new String.fromCharCodes(charCodes);
}


回答4:

try this instead of others.

String try(str) {
  return str.split('').reversed.join('');
}


标签: dart