是否有可能将数字字符串比作数字?

时间:2012-01-27 20:22:34

标签: java string string-comparison

那里有一个有类似设施的图书馆吗?

public static String Min(String first, String second)

如果你传递“200”/“300”它会返回“200”,例如?

我知道有一百万种方法可以自己编写,所以我真的不寻求帮助 - 只是希望找出它是否是其他人已经发明的轮子。

提前致谢!

6 个答案:

答案 0 :(得分:5)

在没有前导零的情况下经常用于编程竞赛的黑客是首先比较字符串的长度;如果长度不相等,则较长的字符串获胜;否则,返回字符串的字典比较结果。

编辑:由于您主要关心的是您的解决方案的可重用性,因此您将获得最大的收益和#34;如果你实现自己的Comparator。这将允许您使用标准Java类重用相同的实现。例如,您可以将比较器与有序映射一起使用,进行数组和列表排序,二进制搜索等。

答案 1 :(得分:3)

在每个上使用Integer.parseInt()并比较该值,例如:

Integer.parseInt(first) > Integer.parseInt(second)

请注意,如果字符串是有效整数,则会引发NumberFormatException,因此请务必考虑到这一点。

答案 2 :(得分:2)

使用Integer.parseInt(String str)将它们转换为数字并比较数字:)重新发明并不是一个重要的轮子;)

答案 3 :(得分:1)

通常,您会在传递给方法之前将字符串转换为数值,并将结果转换回字符串以供显示。

答案 4 :(得分:1)

我怀疑是否有任何此类库具有使用String类但使用{{1}}类进行操作的一组此类方法。也不应该。如果字符串不是有效数字,您会期望这些方法的行为是什么?

必须是将字符串转换为数字的某个步骤。这是一个验证步骤,以便在字符串不是有效数字时对其进行审核。它与比较实际数字完全不同。将这两个操作合二为一,这样就可以使这些功能更多地完成工作,并且公然违反单一的责任原则。

我不确定你为什么要把字符串作为数字来操作 - 可能是因为进来的字符串是由用户提供的。因此,您必须单独验证该输入,然后将它们转换为数字,之后您将可以使用正常的数学函数。

答案 5 :(得分:0)

如果您确定字符串是数字,则可以使用正则表达式准备字符串(例如,将,替换为. ...),然后将它们解析为double。您应该以这种方式覆盖大多数情况(假设您没有解析十六进制值)。