如何使用java在String中查找字符的出现?

时间:2016-11-29 07:14:27

标签: java string substring

我有一个字符串,想要字符串直到第3次出现"," 。我可以使用Array实现这一点。这是代码

remote develop branch

输出为: - String test ="hi,this,is,a,string."; String[] testArray = test.split(","); System.out.println(testArray[0]+","+testArray[1]+","+testArray[2]);

无论如何使用" substring(0,text.indexOf(","))"方法。第二件事可能是某些情况下没有","在字符串中,我想处理两种情况

提前致谢

4 个答案:

答案 0 :(得分:1)

我不确定我是否真的推荐这个,但是 - 是的;有一个two-arg overload of indexOf,可让您指定要搜索的起始位置;所以你可以写:

final int firstCommaIndex = test.indexOf(',');
final int secondCommaIndex = test.indexOf(',', firstCommaIndex + 1);
final int thirdCommaIndex = test.indexOf(',', secondCommaIndex + 1);
System.out.println(test.substring(0, thirdCommaIndex));

答案 1 :(得分:0)

所以你要找的东西基本上是一种在String中接收char(,)的第n个(第3个)索引的方法。 虽然Java的标准库中没有相应的功能,但您可以创建自己的构造(可能看起来像this answer),

或者您可以使用StringUtils from Apache,使您想要的解决方案看起来像这样:

String test ="hi,this,is,a,string.";
int index = StringUtils.ordinalIndexOf(test, ",", 3);
String desired = test.substring(0, index);
System.out.println(desired);

答案 2 :(得分:0)

您可以使用正则表达式实现此目的:

import java.util.regex.*;

public class TestRegex {
    public static void main(String []args){
        String test = "hi,this,is,a,string.";

        String regex = "([[^,].]+,?){3}(?=,)";

        Pattern re = Pattern.compile(regex);

        Matcher m = re.matcher(test);
        if (m.find()) {
            System.out.println(m.group(0));
        }
     }
}

答案 3 :(得分:0)

使用stream java 8的其他方法。这可以处理两种情况

System.out.println(Stream.of(test.split(",")).limit(3).collect(Collectors.joining(",")));