Java:从String获取Float和String值

时间:2014-12-25 08:45:45

标签: java string split

我有一个字符串,例如"4.25GB"

  1. 我想获得浮动部分"4.25"
  2. 获取字符串部分"GB"
  3. 如何在Java中分别获取这两个值。

    感谢。

9 个答案:

答案 0 :(得分:2)

尝试

String s = "4.25GB"
Float value = Float.valueOf(s.replaceAll("[^\\d.]", "")); // remove all non-numeric symbols
String f = s.replaceAll("[0-9]",""); // remove all numbers

答案 1 :(得分:1)

获取数字部分:String numberPart = "4.25GB".replaceAll("[^0-9.]", "");

获取字符串部分:String stringPart = "4.25GB".replaceAll("[^A-Za-z]", "");

答案 2 :(得分:0)

使用String.replaceAll首先用""替换所有非数字和点。得到号码然后

答案 3 :(得分:0)

你可以编写一个类似于C#int.TryParse方法的函数,并在你的字符串循环中使用它,只有当你总是有一个(NUM)(STRING)形式时它才会起作用:

boolean tryParse(String value)  
{  
     try  
     {  
         Integer.parseInt(value);  
         return true;  
      } catch(NumberFormatException e)  
      {  
          return false;  
      }  
}

答案 4 :(得分:0)

使用split / substring概念。将字符串分开如下:

 String Str = new String("4.25GB");
 for (String retval: Str.split("G")){
     System.out.println(retval);
  }

       //or u can use 
   String[] r = s.split("(?=\\p{Upper})");

答案 5 :(得分:0)

您可以使用public String substring(int beginIndex, int endIndex)

String start = "4.25GB";
String numbers = start.substring(0,4);
String letters = start.substring(4,6);

详细了解substrings以及如何使用here

答案 6 :(得分:0)

经过测试,有效:

String str = "4.25GB" ;
String parts[] = str.split("(?i)(?<=\\d)(?=[a-z])|(?<=[a-z])(?=\\d)");

float number = Float.parseFloat(parts[0]) ;
String string = parts[1] ;

System.out.println(number); //4.25
System.out.println(string); //GB

答案 7 :(得分:0)

你可以使用这样的正则表达式:

String s = "4.25GB";

String num = s.replaceAll("[^0-9.]", "");
System.out.println(num);
String str = s.replaceAll("[0-9.]", "");
System.out.println(str);
希望能帮到你。

答案 8 :(得分:0)

这取决于&#34;例如&#34;手段。所有字符串的格式是&#34; x.xxGB&#34;?如果是这种情况,那么你可以使用substring(),因为你知道&#39; float&#39;的确切数量。字符和&#39;后缀&#39;字符。

String theStr = "x.xxGB";
String numStr = theStr.substring(0, 4); // grab first 4 chars: "x.xx"
float numFloat = Float.parseFloat(numStr);
String suffix = theStr.substring(5);  //  or .substring(5, 7);  if you know the exact length

如果它变得多变,那就变得更复杂了。如果您不知道前导数字字符串的长度,则必须将第一部分检查为有效的浮点数,这可能是收集字符作为开始并将每个继承检查为一个最简单的方法。有效浮点数,其余全部被视为后缀。也许是这样的(伪代码):

String theStr = "324.994SUFFIX";  // SomeArbitraryNumberAndSuffixString
String currNumStr = "";
Boolean bHaveFloat = true;
for (int i = 1; i < theStr.length(); i++){
    String testStr = theStr.substring(0, i);
    try{
        float f = Float.parseFloat(testStr);
    } catch (NumberFormatException nfe){
        // handle the exception, printStackTrace, etc...
        // failed so No longer have Valid String...
        break;
    }
    currNumStr = testStr;
}
//  currNumStr now has the valid numberString