如何计算java

时间:2017-01-02 10:25:51

标签: java string

我正在使用String s="abc,def,hi,hello,lol"
通过使用java,我们如何从最后的第3个逗号分割字符串并获取字符串和字符串计数
需要输出为

  

,喜你好,洛尔

并且计数是13
能否指导我提供更好的代码

下面是我的代码,但它从最后的第3个逗号中删除了字符串

String s ="abc,def,hi,hello,lol";
String[] split = s.split(",");

String newStr = "";
for(int i = 0 ; i < split.length -3 ; i++){ 
    newStr += split[i] + ",";
}

newStr = newStr.substring(0, newStr.length() - 1);
System.out.println(newStr);

4 个答案:

答案 0 :(得分:0)

查看String类API。

您可以使用lastIndexOf(String str, int fromIndex)substring(int beginIndex)length()方法。

按照以下步骤操作:

  1. 致电lastIndexOf 3次并记下返回值。
  2. 使用substring从此索引中获取字符串。
  3. 使用length来计算。

答案 1 :(得分:0)

试试这个,

            String data ="abc,def,hi,hello,lol";
        StringBuilder sb = new StringBuilder(data);
        sb.reverse();
        data= sb.toString();

        List<String> split = new ArrayList<String>();
        int startIndex = 0;
        int n = 0;
        for (int i = data.indexOf(',') + 1; i > 0; i = data.indexOf(',', i) + 1, n++) {
            if (n % 3 == 2) {
                split.add(data.substring(startIndex, i ));
                startIndex = i;
            }
        }
        split.add(data.substring(startIndex));
        for(String s : split)
        {
            sb = new StringBuilder(s);
            s = sb.reverse().toString();
            System.out.println(s+" : "+s.length());
        }

输出: ,嗨,你好,哈哈:13 abc,def:7

答案 2 :(得分:0)

这个只用两个陈述得出答案:

public static void main(String[] args) {
    String s = "abc,def,hi,hello,lol";
    String[] pieces = s.split("(?=,)"); // split using positive lookahead
    String answer = (pieces.length < 3) ? "": // check if not enough pieces
        Arrays.stream(pieces).skip(pieces.length - 3).collect(Collectors.joining());
    System.out.format("Answer = \"%s\"%n", answer);
    System.out.format("Count = %d%n", answer.length());
}

我在使用正向前瞻的每个逗号之前的位置拆分,因为如果你使用简单的split(","),那么你的程序将以逗号结尾的字符串失败。

答案 3 :(得分:-2)

String output = s.substring(s.indexOf(",", 6));
System.out.println(" string from last 3rd comma -> "+ output +"\n and count -> "+ output.length() );

控制台输出:

  

来自最后3个逗号的字符串 - &gt; ,嗨,你好,哈哈和伯爵 - &gt; 13