我有一个字符串,例如"4.25GB"
"4.25"
"GB"
如何在Java中分别获取这两个值。
感谢。
答案 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