d从串中删非数字

原文

import std.stdio;
import std.algorithm : find, filter;
import std.conv : to;
import std.uni : isNumber;

void main(string[] args){
    if (args.length > 1){
	
        auto filtered = () {
            auto r = args[1].find!isNumber;//检查串包含整
            return r.length ?
                   r.filter!isNumber.to!string // 保留整
                   : args[1];                  // 不变
        } ();

        filtered.writeln;
		
    } else {
        write("写参");
    }
}

旧C方式:

import std.stdio;

void main(){
    string s, str = "4A0B1de!2C9~6";
    foreach(i;str){
        if(i < '0' || i > '9'){ continue; }
        s ~= i;
    }
    writeln("Result: ", s);
}

这样:

void main() {
	string s = "blahblah123blehbleh456bluhbluh";
	auto result = s.filter!(ch => ch.isDigit).to!int;//可转为长.或`串`.
	assert(result == 123456);
}

3行能搞定,为何写6行.
这样:

void main(){
    string s, str = "4A0B1de!2C9~6";
    foreach(i;str){
    	(i >= '0' && i <= '9') ? s~=i : null;
    }
    writeln(s);
}

简单C方式.
不操作值,还可更简单:

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

没有存储,直接输出至标出.

posted @   zjh6  阅读(21)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示