如何在Java中使用substring方法

如何在Java中使用substring方法,java,substring,Java,Substring,我有3个字符串: String text1 = "abcdefgh"; String text2 = "abcdefghijklmn"; String text3 = "abcdefg"; 我想这样做: text1.substring(int1, int2); text2.substring(int1, int2); text3.substring(int1, int2); 将返回abc(前3个字符) 问题是字符串长度总是在变化,因此无论发生什么情况,我都不能使用text1.length。找

我有3个字符串:

String text1 = "abcdefgh";
String text2 = "abcdefghijklmn";
String text3 = "abcdefg";
我想这样做:

text1.substring(int1, int2);
text2.substring(int1, int2);
text3.substring(int1, int2);
将返回abc(前3个字符) 问题是字符串长度总是在变化,因此无论发生什么情况,我都不能使用text1.length。

找到了答案:

.substring(0, 3)

如果长度发生变化,请先进行检查

if (textStr != null && textStr.length() >= 3) {
    newStr = textStr.substring(0, 3);
}

因为字符串长度可以变化(甚至可能是空的),所以最好写一些更通用的东西。在您的示例中,您的测试字符串总是超过3个字符,但总是这样吗?您还可以编写此函数来自动将字符串填充到所需的长度

public static String variableLengthSubstring(String text, int length) {
    StringBuilder substring = new StringBuilder();
    if(text != null) {
        int i = 0;
        length = Math.min(length, text.length());
        while(substring.length() < length) {
            substring.append(text.charAt(i++));
        }
    }
    return substring.toString();
}
public静态字符串variableLengthSubstring(字符串文本,整数长度){
StringBuilder子字符串=新建StringBuilder();
如果(文本!=null){
int i=0;
length=Math.min(length,text.length());
while(substring.length()
为什么不使用text1=text1.子字符串(0,3)??您总是需要前3个字符吗?那么为什么不设置int1=0和int2=3呢?这样做到底有什么问题?您是否希望字符串在大小写中少于3个字符。即使字符串的长度发生变化,但如果字符串大于3个字符,子字符串应适用于索引0和3。它与我的注释有什么不同?这个问题有意义吗?应将其重命名为“如何使用子字符串方法”。如果字符串短于3个字符或为空,则此操作将失败。按照@Dragan的建议去做。