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