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

时间:2017-02-07 05:20:43

标签: java regex

我有一个String sourceString = "<b>" + id + "</b> " + name; mytextview.setText(Html.fromHtml(sourceString)); 形式的字符串。是否有正则表达式或简单方法将其捕获到"/A/B/C/D"形式的String数组中?基本上,拆分&#34; /&#34;但保留分隔符的第一个实例?我可以保证输入字符串将具有&#34; /&#34;作为第一个角色和至少一个&#34; /&#34;跟随第一个。到目前为止,我的尝试是这样的:

[/A, B, C, D]

上面的内容有点笨拙(并且在索引0处有一个空的&#34;&#34;点)所以有什么建议吗?

3 个答案:

答案 0 :(得分:2)

您可以在拆分中使用否定前瞻以避免在第一个分隔符上拆分:

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

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

RegEx Demo

答案 1 :(得分:0)

一个肮脏的解决方案..但至少应该工作。 它假设你在字符串中至少有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;
}

答案 2 :(得分:0)

另一种方式是:

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