How to remove all characters from a string, except the integers?

H. S. Teoh hsteoh at
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

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).


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