How to remove all characters from a string, except the integers?
H. S. Teoh
hsteoh at quickfur.ath.cx
Thu Mar 3 23:46:49 UTC 2022
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.
More information about the Digitalmars-d-learn
mailing list