繁体   English   中英

拆分字符串但保留第一个分隔符

[英]Split a string but retain first delimiter

我有一个"/A/B/C/D"形式的字符串。 是否有正则表达式或简单的方法将其捕获到[/A, B, C, D]形式的字符串数组中? 本质上,在“/”上拆分但保留分隔符的第一个实例? 我可以保证输入字符串的第一个字符是“/”,第一个字符后面至少有一个“/”。 到目前为止,我的尝试是这样的:

private String[] customSplit(String input) {
    if (!input.startsWith("/")) {
        input = "/" + input;
    }

    String[] output = input.split("/");
    output[1] = "/" + output[1];
    return output;
}

虽然上面有点笨拙(并且在索引 0 处有一个空的 "" 点)所以有什么建议吗?

您可以在 split 中使用负前瞻以避免在第一个分隔符上进行拆分:

String[] toks = "/A/B/C/D".split("(?!^)/");
//=> [/A, B, C, D]

这里(?!^)是一个负向前瞻,它将跳过分隔符/起始位置

正则表达式演示

一个肮脏的解决方案......但至少应该有效。 它假设您在字符串中至少有 2 个元素,否则您必须添加一些错误处理代码,但从您编写的内容来看,它应该始终如此。

private String[] customSplit(String input) {
    String preparedInput=input;
    if (input.startsWith("/")) {
        preparedInput=input.substring(1);
    }

    String[] output = preparedInput.split("/");
    output[0] = "/" + output[0];
    return output;
}

另一种方式是:

private String[] customSplit(String input) {
    String[] output = input.substring(1).split("/");
    output[0] = "/" + output[0];
    return output;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM