如何从也有字符串的 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