【问题标题】:is there an easier way to split/rebuild a string?有没有更简单的方法来拆分/重建字符串?
【发布时间】:2012-08-31 16:06:10
【问题描述】:

目前我正在使用String.split(""),如下所示:

String[] tmp = props.get(i).getFullName().split("\\.");
String name = "";
for(int j = 1; j < tmp.length; j++){
    if(j > 1){
        name = name + "." + tmp[j];
    }
    else
        name = name + tmp[j];
}

我的字符串格式为first.second.third...n-1.n,我真正需要做的就是摆脱first.

【问题讨论】:

    标签: java string split


    【解决方案1】:

    我会用

    String s = "first.second.third...n-1.n";
    s = s.substring(s.indexOf('.')+1);
    // or
    s = s.replaceFirst(".*?\\.", "");
    System.out.println(s);
    

    打印

    second.third...n-1.n
    

    【讨论】:

    • @Baz 是时候休息一下了。 ;)
    • 看起来不错。自从我做 reg exp 以来已经有一段时间了,你能解释一下(".*?\\.", "")吗?
    • @DVK A replaceFirst(".*\\.", "") 确实会导致贪婪行为,并打印n...但是? 字符使其成为不同的量词,具有不情愿的行为。基本上,*? 本身就是一个量词(reluctant *),并且不是两个单独的量词(不是* + "once or not at all")。
    【解决方案2】:

    您可以使用java.util.regex 并改为执行正则表达式。

    匹配first. 的正则表达式是^[^.]+[.]

    String s = "first.second.third...n-1.n";
    s.replaceAll('^[^.]+[.]', '');
    

    【讨论】:

    • 我参加了一个正规的前课程,我发誓之后一切都消失了。我想我需要多读一点。感谢您的快速响应
    • @Phox - 我(主要)以 Perl 开发为生。定期执行正则表达式很容易(双关语)
    • 是的,我只编写了很少的 perl 代码(我认为它可能是 reg ex 类或后续 upclass)它们非常强大
    • 我不确定,但我相信,在这种情况下,要删除明确定义的分隔符之前的整个文本,substring 方法比使用正则表达式更快。在这种情况下,彼得的第一个解决方案应该只会(快速)输给自定义编码的函数。
    猜你喜欢
    • 1970-01-01
    • 2019-07-05
    • 1970-01-01
    • 1970-01-01
    • 2013-03-02
    • 2012-01-21
    • 1970-01-01
    • 1970-01-01
    • 2016-06-02
    相关资源
    最近更新 更多