在 Android 中解析带有维度的值
在 Android 中解析具有维度的值的正确方法是什么?例如,我想从以下任意字符串中获取值为 20 的 int
:20px
、20mm
、20dp
。
尝试 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
如果该单位始终存在并且只是所提到的其中之一,并且您确定您永远不会需要它 - 只需解析子字符串
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.
如果您从
AttributeSet
开始,您可以通过Context
获取TypedArray
,并最终使用getDimension
或相关的功能。如果您只想将字符串传递给 parseInt 而不引发异常,请尝试以下操作:
正则表达式从第一个非数字字符开始截断字符串。这意味着字符串必须以数字开头。
If you start with an
AttributeSet
, you can obtain aTypedArray
through aContext
and eventually usegetDimension
or a related function.If you just want to pass a string to parseInt without throwing an exception try this:
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.