On Thu, Mar 03, 2022 at 10:54:39PM +0000, matheus via Digitalmars-d-learn wrote:
> On Thursday, 3 March 2022 at 21:03:40 UTC, H. S. Teoh wrote:
[...]
> > ------
> > void main() {
> >     string s = "blahblah123blehbleh456bluhbluh";
> >     auto result = s.filter!(ch => ch.isDigit).to!int;
> >     assert(result == 123456);
> > }
> > ------
[...]
> PS: I spotted something on your code, you're converting the result to
> int, this can lead to a overflow depending the values in the string.

If you need to, convert to long instead.

Or if you want a string for subsequent manipulation, replace `int` with
`string`.

Or, if you don't actually need to manipulate the value at all, but just
print the digits, then it becomes even simpler:

        void main() {
                string s = "blahblah123blehbleh456bluhbluh";
                writeln(s.filter!(ch => ch.isDigit));
        }

This version doesn't even allocate extra storage for the filtered
digits, since no storage is actually needed (each digit is spooled
directly to the output).


T

-- 
The peace of mind---from knowing that viruses which exploit Microsoft system 
vulnerabilities cannot touch Linux---is priceless. -- Frustrated system 
administrator.

Reply via email to