所以我有
形式的Java输入s1,s2,s3,s4,s5,...,sn
我有以逗号分隔的n个字符。我想在某一点拆分它们,并且只在字符串中留下更大索引的字符。 我们假设这段代码
String s = "a,bn,c,st1,d,kr332,23,b4,46"
我想分开它,让我们在第三个标志后说,所以在c。 我希望剩下的字符串是
s="st1,d,kr332,23,b4,46"
我提出了一种方法但看起来很原始
List<String> list = Arrays.asList(s.split(","));
s="";
现在我有一个字符串列表,我可以像
一样遍历它们for(int i=(number where i want to cut off); i<list.size(); i++){
s+=list.get(i);
}
有更优雅的方式吗?
答案 0 :(得分:4)
此任务不需要任何正则表达式。
String s = "a,bn,c,st1,d,kr332,23,b4,46";
String find = ",c,";
String r = s.substring(s.indexOf(find)+find.length()); // st1,d,kr332,23,b4,46
修改强>
As per comments you can use this to remove everything upto 3rd comma:
String r = s.replaceFirst("([^,]*,){3}", "")
答案 1 :(得分:2)
使用JDK 8,并假设您正在按职位搜索令牌,这应该有效:
import static java.util.Arrays.stream;
import static java.util.stream.Collectors.joining;
//...
int pos = 3;
String s = "a,bn,c,st1,d,kr332,23,b4,46";
String[] tokens = s.split(",") ;
if(tokens.length > pos){
String rejoined = stream(tokens, pos, tokens.length).collect(joining(","));
}
答案 2 :(得分:1)
尝试:
String s = "a,bn,c,st1,d,kr332,23,b4,46";
String search = "c";
List<String> list = Arrays.asList(s.split(","));
String output = StringUtils.join(list.subList(list.indexOf(search) + 1, list.size()), ",");
输出:
st1,d,kr332,23,b4,46
答案 3 :(得分:1)