为了账号安全,请及时绑定邮箱和手机立即绑定

分隔符上的 Java 子字符串不使用拆分或正则表达式

分隔符上的 Java 子字符串不使用拆分或正则表达式

喵喔喔 2022-07-20 16:28:10
我有一个单独的测试类,它将传入一个高值和低值的字符串,中间有一个:,代表数字 0-6。一个例子是“6:2”。我需要根据分隔符分隔这些数字:分隔符,但我的教授不希望我使用拆分或任何正则表达式。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);不返回分隔符之前的数字。我在最后一部分做错了什么?
查看完整描述

3 回答

?
慕码人8056858

TA贡献1803条经验 获得超6个赞

检查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);


查看完整回答
反对 回复 2022-07-20
?
猛跑小猪

TA贡献1858条经验 获得超8个赞

该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());

    }

}


查看完整回答
反对 回复 2022-07-20
?
德玛西亚99

TA贡献1770条经验 获得超3个赞

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”。


查看完整回答
反对 回复 2022-07-20
  • 3 回答
  • 0 关注
  • 203 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号