我正在使用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);
答案 0 :(得分:0)
查看String
类API。
您可以使用lastIndexOf(String str, int fromIndex)
,substring(int beginIndex)
和length()
方法。
按照以下步骤操作:
lastIndexOf
3次并记下返回值。substring
从此索引中获取字符串。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