繁体   English   中英

定界符上的Java子字符串不使用split或regex

[英]Java substring on delimiter not using split or regex

我有一个单独的测试类,该类将传入一个高值和低值的字符串,中间带有一个:,表示数字0-6。 一个例子是“ 6:2”。 我需要基于:分隔符来分隔这些数字,但是我的教授不希望我使用split或任何正则表达式。

public class DominoHighLowImpl_Laursen implements Domino {

public static final String HIGH_LOW_STRING_SEPARATOR = ":";

public DominoHighLowImpl(String highLowString) 
{



}

所以输入

String substr = highLowString.substring(highLowString.indexOf(HIGH_LOW_STRING_SEPARATOR) + 1);  

按预期在定界符后返回数字

String substr = highLowString.substring(highLowString.indexOf(HIGH_LOW_STRING_SEPARATOR) - 1);

不返回定界符之前的数字。 最后一部分我做错了什么?

检查substring(int beginIndex)substring(int beginIndex,int endIndex)

String high = highLowString.substring(0, highLowString.indexOf(HIGH_LOW_STRING_SEPARATOR));
String low = highLowString.substring(highLowString.indexOf(HIGH_LOW_STRING_SEPARATOR) + 1);

String substr = highLowString.substring(highLowString.indexOf(HIGH_LOW_STRING_SEPARATOR) + 1); 正在工作,因为indexOf(HIGH_LOW_STRING_SEPARATOR)为1。因此substring(2)将包含“ 2”。

但是当你这样做

String substr = highLowString.substring(highLowString.indexOf(HIGH_LOW_STRING_SEPARATOR) - 1)该值变为indexOf(0)因此将存储整个字符串“ 6:2”。

尝试

String substr = highLowString.substring(0,highLowString.indexOf(HIGH_LOW_STRING_SEPARATOR)); 得到“ 6”。

substring方法已重载,这意味着可以调用它传递不同数量的int参数/参数。 如果只用一个调用它,则将获得子字符串,该子字符串从传递的索引开始,到String的最大索引结束。 如果使用两个参数调用它,您将收到子字符串,该子字符串从传递的较低索引开始,到传递第二个索引之前结束。

请参阅以下示例:

public class DominoHighLowImpl_Laursen {

    public static final String HIGH_LOW_STRING_SEPARATOR = ":";

    private String highLowString;

    public DominoHighLowImpl_Laursen(String highLowString) {
        this.highLowString = highLowString;
    }

    public String getLow() {
        return highLowString.substring(0, highLowString.indexOf(HIGH_LOW_STRING_SEPARATOR));
    }

    public String getHigh() {
        return highLowString.substring(highLowString.indexOf(HIGH_LOW_STRING_SEPARATOR) + 1);
    }

    public static void main(String[] args) {
        DominoHighLowImpl_Laursen domino = new DominoHighLowImpl_Laursen("1020304:4456778");

        System.out.println("High:\t" + domino.getHigh());
        System.out.println("Low:\t" + domino.getLow());
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM