Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java:从字符串中获取浮点值和字符串值_Java_String_Split - Fatal编程技术网

Java:从字符串中获取浮点值和字符串值

Java:从字符串中获取浮点值和字符串值,java,string,split,Java,String,Split,我有一个字符串,例如“4.25GB” 我想得到浮动部分“4.25” 并获取字符串部分“GB” 如何在Java中分别获取这两个值 谢谢。使用String.replaceAll首先将所有非数字和点替换为“”以获取数字,否则您可以编写一个类似于C#int.TryParse方法的函数,并在字符串的循环中使用它,它仅在您始终具有(NUM)(字符串)形式时才起作用: boolean tryParse(String value) { try { Integ

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

  • 我想得到浮动部分
    “4.25”
  • 并获取字符串部分
    “GB”
  • 如何在Java中分别获取这两个值


    谢谢。

    使用String.replaceAll首先将所有非数字和点替换为“”以获取数字,否则

    您可以编写一个类似于C#int.TryParse方法的函数,并在字符串的循环中使用它,它仅在您始终具有(NUM)(字符串)形式时才起作用:

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

    使用拆分/子字符串概念。按如下方式分割字符串:

     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})");
    
    试一试


    您可以使用
    公共字符串子字符串(int-beginIndex,int-endIndex)

    阅读更多关于
    子字符串
    以及如何使用它们的信息

    测试,工作:

    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
    
    String str=“4.25GB”;
    
    字符串部分[]=str.split((?i)(?以获取数字部分:
    String numberPart=“4.25GB”。replaceAll([^0-9.]”,”);


    若要获取字符串部分:
    stringstringpart=“4.25GB”。replaceAll([^A-Za-z],”);

    您可以像这样使用正则表达式:

    String s = "4.25GB";
    
    String num = s.replaceAll("[^0-9.]", "");
    System.out.println(num);
    String str = s.replaceAll("[0-9.]", "");
    System.out.println(str);
    
    希望对您有所帮助。

    这取决于“例如”的含义。所有字符串都是格式为“x.xxGB”的吗?如果是这种情况,那么您可以使用substring(),因为您知道“float”字符和“suffix”字符的确切数量

    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
    
    如果变量大于此,则会变得更复杂。如果您不知道前导数字字符串的长度,则必须检查第一部分是否为有效浮点,最简单的方法可能是以收集字符为起点,并检查每个序列是否为有效浮点,其余部分都被视为后缀。或者g如下所示(伪代码):

    String theStr=“324.994后缀”;//someArbitraryNumberAndSuffix字符串
    字符串currNumStr=“”;
    布尔bHaveFloat=true;
    对于(inti=1;i
    如果必须始终将最后两个字符作为字符串,则可以将其前面的所有字符作为双精度(或浮点)字符,将其余字符作为字符串。Character.isDigit()或Character.isleter()将帮助您识别字母和数字
    String s = "4.25GB";
    
    String num = s.replaceAll("[^0-9.]", "");
    System.out.println(num);
    String str = s.replaceAll("[0-9.]", "");
    System.out.println(str);
    
    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