简体   繁体   English

Dart list 得到最长的字符串

[英]Dart list get the longest string

I want to get first longest string?我想获得第一个最长的字符串? How can i do this?我怎样才能做到这一点?

List<String> list = ['hi', 'hello', 'frozen', 'big mistake', 'cool daddy'];

this is the shortest solution, which will return the longest string:这是最短的解决方案,它将返回最长的字符串:

list.reduce((a, b) {
   return a.length > b.length ? a : b;
})

another alternative is:另一种选择是:

list.sort((a, b) {
   return b.length - a.length;
});
print(list[0]);

Check the below function i have done in my project to get the longest string.检查下面的 function 我在我的项目中完成的以获得最长的字符串。

long_string(arr) {
        var longest = arr[0];
        for (var i = 1; i < arr.length; i++) {
            if (arr[i].length > longest.length) {
                longest = arr[i];
            }
        }
        return longest;
    }

And you can call the function like below to get the longest string你可以像下面这样调用 function 来获得最长的字符串

var arr = ["Orebro", "Sundsvall", "Hudriksvall", "Goteborgsdsdsds"];
  print(long_string(arr));

The solution posted by Sparko Sol could also be used in an extension on List<String> to make it easier to reuse this method anywhere in the codebase. Sparko Sol 发布的解决方案也可用于List<String>的扩展中,以便更轻松地在代码库中的任何位置重用此方法。 Such an extension could look something like这样的扩展看起来像

extension Longest on List<String> {
  /// Returns the longest element in a [List<String>]
  String longest() {
    return reduce((a, b) {
      return a.length > b.length ? a : b;
    });
  }
}

Then, to use this extension, you could simply write something like然后,要使用这个扩展,你可以简单地写一些像

String longestString = list.longest();
final longestString = list.fold<String>('', 
  (previousValue, element) => 
    element.length > previousValue.length ? element : previousValue)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM