Java中是否有类似math.substring的函数?

3

好的,我很好奇。但是我想知道是否有数字的子字符串(math.substring?),然后它将获取指定位置的字符。

例子(非常糟糕的想法)

int number = 5839;
int example = number.substring(0,1)
println = example;

然后它会显示5吗?

2
为什么不直接使用舍入函数呢?在这个例子中,floor 函数后除以 1000 就会得到 5。 - ChrisW
@ChrisW 这不是用于四舍五入的:p 我应该指明,它将用于比较数字。我应该指明的。 - Kalvin
没有针对数字的子字符串操作的原因是数字本身与它们的表示方式无关。如果您想要一个基于十进制表示的子字符串,那么可以像其他人建议的那样进行这样的表示。这样的子字符串操作如何知道您想要基于十进制(在ASCII中)而不是基于二进制(二进制)、十六进制(十六进制)或基于64进制或任何其他进制呢? - eh9
5个回答

3

为什么不把它转换成字符串,然后调用substring(0,1)?...

int number = 5839;
int example = Integer.parseInt((number+"").substring(0,1));

当调用 number+"" 时,JVM会将其转换为一个 String,然后调用 substring() 方法。最后,你需要将其解析回一个 int


你这里缺少括号:((number+"").substring(0,1)); - Farhan Syed
需要这些括号吗?我知道JVM首先评估+"",将其转换为字符串,然后再尝试调用substring()。当然,这些括号不会有任何影响 :-) - wattostudios
直到有一天我意识到我错了,我一直以为是这样的。试着运行它,会出现错误。 - Farhan Syed
1
String.valueOf() 不是更快吗? - NoBugs
谢谢@FarhanSyed,我已经更新了我的答案以反映这一点。 - wattostudios

2
int number = 5839;
String numString = Integer.toString(number);
String example = numString.substring(0,1)
int subNum = Integer.parseInt(example);
System.out.println(subNum);

首先将其转换为String类型。这是我编写的一个小函数:

public static int intSubstring(int number, int beginIndex, int endIndex) {
    String numString = Integer.toString(number);
    String example = numString.substring(beginIndex,endIndex)
    int subNum = Integer.parseInt(example);
    return subNum;
}

或者是压缩后的:

public static int intSubstring(int number, int beginIndex, int endIndex) {
    return Integer.parseInt((number+"").substring(beginIndex,endIndex));
}

只是想确认是否有一种特定于数字的方法,但我猜没有。谢谢 :) - Kalvin
@Kalvin,你可以像我一样编写一个函数并调用它,这将有点特定于 int :) - tckmn
每次在空字符串上调用子字符串时,您都会得到索引数组越界。添加括号以避免这种情况发生。 - Farhan Syed
@FarhanSyed 哦,无聊。我没想到。:P 谢谢 - tckmn
嗯...这一天已经很晚了 :P。 - Farhan Syed

2

目前没有这样的东西,但您可以执行以下操作:

String s = ""+number; //You can now use the Substring method on s;

如果您只想删除最后y位数字:

number = (int)(number/y);

如果您只想保留最后 z 位数字:

number = number%(Math.pow(10,z)); // % means modulo

2
没有这样的方法。但是你可以将整数转换为字符串,获取子字符串,然后再解析回整数。

1
没有,int是一种原始数据类型。但是,您可以通过一个语句来实现您的需求。
Integer.parseInt(String.valueOf(12345).substring(1, 2))

1
然后您需要将该“String”解析回“int”。 - tckmn

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