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”
谢谢。使用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