How to get a substring?
Jakob Ovrum
jakobovrum at gmail.com
Sun Oct 27 00:44:04 PDT 2013
On Saturday, 26 October 2013 at 21:23:13 UTC, Gautam Goel wrote:
> Dumb Newbie Question: I've searched through the library
> reference, but I haven't figured out how to extract a substring
> from a string. I'd like something like
> string.substring("Hello", 0, 2) to return "Hel", for example.
> What method am I looking for? Thanks!
There are a lot of good answers in this thread but I also think
they miss the real issue here.
When working with Unicode, you'll want to stop thinking in terms
of indices, in order to produce correct code. Getting a
sub-string by passing indices is a means to an end; you'll want
to replace the index paradigm with an approach that does not rely
on indices.
Working with indices where the smallest unit is a code point
(dchar), which has been suggested in this thread, is still not
good enough because you'll either a) potentially break up
grapheme clusters, which can have disastrous results, or b) end
up redundantly searching through the string to find the correct
code point positions.
With Phobos, you can use algorithms such as `find` and the
`findSplit` family of algorithms to do string manipulation
without using indices, and the cool thing about this approach is
that as long as the input strings are properly formed UTF and
have intact grapheme clusters, it's impossible to get
Unicode-incorrect results!
When working with ASCII, just slice.
More information about the Digitalmars-d-learn
mailing list