DEV Community

Jordan Holland
Jordan Holland

Posted on • Originally published at developermemos.com

Getting a substring in Dart

I was trying to figure out the most efficient way to trim or shorten a String in Dart(more speficially for a Flutter project) yesterday. There's actually a couple of different ways to do it.

The substring method

The first and most typical one is using the substring method. The use case is pretty simple, you call substring on your string and specify a start and end index:

final name = "developermemos";
final portion = name.substring(0, 9); // developer
Enter fullscreen mode Exit fullscreen mode

While it's easy to understand it wasn't great for my use case because I just wanted to shorten an existing string, and if you specify an end index that your string doesn't contain(for example 20 for the above case hypothetically) you will get a RangeError.

The characters approach

What I wanted to do was get the first x characters for a string that could potentially have a length of anything above 0. I found out that the easiest approach for this case is to use .characters.take on the string, here's an example:

final name = "developermemos";
final portion = name.characters.take(9).toString(); // developer
Enter fullscreen mode Exit fullscreen mode

The good thing about this approach is that you won't get a RangeError like you would with substring if you specify an index that is too high, it will just return the entire string instead:

final name = "developermemos";
final portion = name.characters.take(30).toString(); // developermemos
Enter fullscreen mode Exit fullscreen mode

This was perfect for my particular use case. The only caveat is that it seems like while the above will work without any imports in Flutter, if you are using plain Dart you need to add and import the characters package.

Bonus: The takeLast method

There's also another method called takeLast that does pretty much the same thing as take but in reverse, it will take the last x characters from a string. If you use a count that is higher than the length of the string itself it will just return the entire string. Here's a quick example:

final name = "developermemos";
final portion = name.characters.takeLast(5).toString(); // memos
Enter fullscreen mode Exit fullscreen mode

Discussion (0)