Home > Net >  How to set maximum length in String value DART
How to set maximum length in String value DART

Time:06-17

i am trying to set maximum length in string value and put '..' instead of removed chrs like following

String myValue = 'Welcome'

now i need the maximum length is 4 so output like following

'welc..'

how can i handle this ? thanks

CodePudding user response:

The short and incorrect version is:

String abbrevBad(String input, int maxlength) {
  if (input.length <= maxLength) return input;
  return input.substring(0, maxLength - 2)   "..";
}

(Using .. is not the typographical way to mark an elision. That takes ..., the "ellipsis" symbol.)

A more internationally aware version would count grapheme clusters instead of code units, so it handles complex characters and emojis as a single character, and doesn't break in the middle of one. Might also use the proper ellipsis character.

String abbreviate(String input, int maxLength) {
  var it = input.characters.iterator;
  for (var i = 0; i <= maxLength; i  ) {
    if (!it.expandNext()) return input;
  }
  it.dropLast(2);
  return "${it.current}\u2026";
}

That also works for characters which are not single code units:

void main() {
  print(abbreviate("argelbargle", 7)); // argelb…
  print(abbreviate("           
  • Related