如何从也有字符串的 TextView 中获取数字
How to get a number from a TextView that also has Strings
我有两个 TextView
显示几个 EditText 框的平均值并将它们显示为 "My Avg: 245" 和另一个 Textview
有 "My Avg: 145"。我在单击按钮时计算这两个 TextView
的平均值,并将按钮的文本设置为答案。如何只从两个文本视图中获取数字?因为在 TextView 上调用 Double.parseDouble()
时,出现错误。任何帮助将不胜感激,谢谢。
您不能直接在 String
上调用 Double#parseDouble
,因为如果它不是数字,它可能会抛出 NumberFormatException
。
因此,您必须先从中取出号码。您可以使用 String#split
.
使用 TextView#getText()
获取字符串
文本分割使用
String[] val = textViewText.split(":");
这将return一个数组,然后你可以调用Double.parseDouble
,
double num = Double.parseDouble(val[1].trim());
您可以从文本视图中获取数字,如下所示:
String textView = tv.getText().toString();
if (!textView.equals("") && !textView.equals(......)) {
int num = Integer.parseInt(textView);//extract number from text view
}
在textview中计算平均值是什么意思?无论你在哪里进行计算,你都应该能够访问这些值,尝试从文本视图中解析值并不是一个很好的做法。
分享你的代码和你得到的错误,我猜你正在尝试用 textview 的完整字符串解析值,并且正如你想象的那样,无法从中获取 Double 值一个字符串。
如果字符串 My avg:
永远不会改变,那么您将这个字符串从“:”符号和 trim 值中分离出来。
String text = "My avg: 245";
String numberString = text.split(":")[1];
Double number = Double.parseDouble(numberString);
System.out.println(number);
输出是:
245.0
我坚持认为你不应该使用这种方法,如果文本因任何原因发生变化,你的应用程序将会崩溃。
从所有 EditText 中获取字符串并使用正则表达式从字符串中提取数字。检查以下示例:
String str = "My Avg: 145";
Pattern pattern = Pattern.compile("(\d+)");
Matcher m = pattern.matcher( str );
if( m.find() ){
String i=m.group();
System.out.println( "-->>" + i);
}
这里
\d means one digit
\d+ means one or more digits
() means capture that group
此 regrx 将为您提供字符串中的第一组数字。您可以使用 double.parse();
解析 i
我有两个 TextView
显示几个 EditText 框的平均值并将它们显示为 "My Avg: 245" 和另一个 Textview
有 "My Avg: 145"。我在单击按钮时计算这两个 TextView
的平均值,并将按钮的文本设置为答案。如何只从两个文本视图中获取数字?因为在 TextView 上调用 Double.parseDouble()
时,出现错误。任何帮助将不胜感激,谢谢。
您不能直接在 String
上调用 Double#parseDouble
,因为如果它不是数字,它可能会抛出 NumberFormatException
。
因此,您必须先从中取出号码。您可以使用 String#split
.
使用 TextView#getText()
文本分割使用
String[] val = textViewText.split(":");
这将return一个数组,然后你可以调用Double.parseDouble
,
double num = Double.parseDouble(val[1].trim());
您可以从文本视图中获取数字,如下所示:
String textView = tv.getText().toString();
if (!textView.equals("") && !textView.equals(......)) {
int num = Integer.parseInt(textView);//extract number from text view
}
在textview中计算平均值是什么意思?无论你在哪里进行计算,你都应该能够访问这些值,尝试从文本视图中解析值并不是一个很好的做法。
分享你的代码和你得到的错误,我猜你正在尝试用 textview 的完整字符串解析值,并且正如你想象的那样,无法从中获取 Double 值一个字符串。
如果字符串 My avg:
永远不会改变,那么您将这个字符串从“:”符号和 trim 值中分离出来。
String text = "My avg: 245";
String numberString = text.split(":")[1];
Double number = Double.parseDouble(numberString);
System.out.println(number);
输出是:
245.0
我坚持认为你不应该使用这种方法,如果文本因任何原因发生变化,你的应用程序将会崩溃。
从所有 EditText 中获取字符串并使用正则表达式从字符串中提取数字。检查以下示例:
String str = "My Avg: 145";
Pattern pattern = Pattern.compile("(\d+)");
Matcher m = pattern.matcher( str );
if( m.find() ){
String i=m.group();
System.out.println( "-->>" + i);
}
这里
\d means one digit
\d+ means one or more digits
() means capture that group
此 regrx 将为您提供字符串中的第一组数字。您可以使用 double.parse();
i