在 Android 中解析带有维度的值

发布于 2024-10-30 10:02:11 字数 187 浏览 4 评论 0原文

在 Android 中解析具有维度的值的正确方法是什么?例如,我想从以下任意字符串中获取值为 20 的 int20px20mm20dp

尝试 Integer.parseInt() 并没有让我走得太远,因为它会引发非数字字符的异常。

What is the proper way to parse a value with a dimension in Android? For example, I would want to get an int with a value of 20 from any of these strings: 20px, 20mm, 20dp.

Trying Integer.parseInt() doesn't get me very far because it throws an exception on non-numeric characters.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

ま柒月 2024-11-06 10:02:11

如果该单位始终存在并且只是所提到的其中之一,并且您确定您永远不会需要它 - 只需解析子字符串 str.substring(0, str.length() - 3)

我建议使用自定义类来解析和保存包括单位在内的值 - 有时您可能需要它。

If the unit is always present and is only one of the mentioned AND you are sure you won't ever need it - simply parse a substring str.substring(0, str.length() - 3)

I would recommend using a custom class to parse and hold the value including the unit - you might need it sometime.

倦话 2024-11-06 10:02:11

如果您从AttributeSet开始,您可以通过Context获取TypedArray,并最终使用getDimension或相关的功能。

如果您只想将字符串传递给 parseInt 而不引发异常,请尝试以下操作:

Integer.parseInt( someString.replaceFirst( "[^0-9].*" , "" ) );

正则表达式从第一个非数字字符开始截断字符串。这意味着字符串必须以数字开头。

If you start with an AttributeSet, you can obtain a TypedArray through a Context and eventually use getDimension or a related function.

If you just want to pass a string to parseInt without throwing an exception try this:

Integer.parseInt( someString.replaceFirst( "[^0-9].*" , "" ) );

The regular expression truncates the string starting at the first character that is not a digit. Which implies that the string must start with a digit.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文