Java字符串有left()函数吗?

22

我有一个长度未知(但不为null)的字符串 str,以及一个给定的最大长度 len,并且该字符串需要适应这个长度。我想要做的只是在 len 的位置截断该字符串。

我知道可以使用

str.substring(0, Math.min(len, str.length()));

但是如果我试图像这样编写堆叠的代码,这并不方便

code = str.replace(" ", "").left(len)

我知道我可以编写自己的函数,但我更喜欢现成的解决方案。Java 中是否有现成的 left() 函数?


4
没有,你所拥有的是在Java的String类中。可能会有外部库提供额外的方法-或者你可以自己编写。 - Aleks G
1
没有内置的函数,但是Apache Commons有StringUtils类,其中包含适合您的left函数。 - Mark Chorley
7个回答

18

虽然 Java 中没有内置函数实现该功能,但是 Apache Commons 库提供了 StringUtils 类,其中包含适合您需求的 left 函数。


5
如果您不想添加StringUtils库,仍然可以按照您的意愿使用它,方法如下:
String string = (string.lastIndexOf(",") > -1 )?string.substring(0, string.lastIndexOf(",")): string;

2
使用Split函数。
String str = "Result string Delimiter Right String";
System.out.println(str.split("Delimiter")[0].trim());

输出:"结果字符串"


1
你可以使用字符串格式化工具Format
在本例中,格式说明符"%-9s"表示最少9个字符左对齐(-)。"%-9.9s"表示最多9个字符。
System.out.println (String.format("%-9.9s","1234"));
System.out.println (String.format("%-9.9s","123456789ABCD"));
int len=9;
System.out.println (String.format("%-"+len+"."+len+"s","123456789ABCD"));

输出:

1234     
123456789
123456789
在OP的情况下,应该是这样的:
static final int MAXLEN=9;
code = String.format("%-"+MAXLEN+"."+MAXLEN+"s",str.replace(" ", ""));

1

-1
将以下函数放入一个类中:
 public static String getLeftString(String st,int length){
    int stringlength=st.length();

    if(stringlength<=length){
        return st;
    }

    return st.substring((stringlength-length));
}

这将获取字符串的末尾,因此它更类似于 right() 函数。 - OldMcDonald

-1

在我的情况下,我只想获取日期。

String s = "date:2021-01-01";

int n = s.length() - 10; //10 是日期的长度

String result = s.substring(n);

结果将是 "2021-01-01"。


这并没有回答问题。问题是问是否有一种现有的方法来做到这一点。它并没有问如何做到这一点。而且,你的代码实际上正在实现与OP指定的不同的东西。仔细阅读他的代码。 - Stephen C

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接