You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

D语言字符串分割:如何将连续空格视为单个分隔符并过滤空元素

D语言中按空白分割字符串并过滤空元素的内置方案

你不需要手动写filter加Lambda来处理,D标准库本身就有更简洁的内置方法满足需求:

1. 直接使用无参数的split()

当调用input.split()(不传任何分隔符参数)时,它会自动将任意连续的空白字符(包括空格、制表符、换行符等)视为单个分隔符,同时自动过滤掉分割产生的空元素,完美匹配你的示例需求:

import std.array;
import std.stdio;

void main() {
    string input = "This is   a string";
    auto output = input.split();
    writeln(output); // 输出:["This", "is", "a", "string"]
}

2. 仅按ASCII空格分割(排除其他空白字符)

如果你的需求是严格只以ASCII空格作为分隔符,不包含制表符、换行等其他空白,可以使用更精准的处理方式:

import std.array;
import std.algorithm;
import std.stdio;

void main() {
    string input = "This is   a string";
    // 按单个空格分割后过滤空字符串
    auto output = input.split(" ").filter!(s => !s.empty).array;
    // 或者用splitWhen实现更高效的连续空格处理
    auto output2 = input.splitWhen!(c => c == ' ').filter!(s => !s.empty).array;
    writeln(output); // 输出同样符合预期
}

第一种无参数的split()是处理空白分割场景最简洁的方式,完全覆盖你示例中的连续空格需求,不需要额外过滤逻辑。

内容的提问来源于stack exchange,提问作者Sean

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 09:14:59