试图删除所有不是0-9和句号的字母和字符。我使用的是character。isdigit()但它也删除了小数,我怎么能保留小数呢?
当前回答
我会用正则表达式。
String text = "-jaskdh2367sd.27askjdfh23";
String digits = text.replaceAll("[^0-9.]", "");
System.out.println(digits);
打印
2367.2723
你也可以用-来表示负数。
其他回答
番石榴:
String input = "abx123.5";
String result = CharMatcher.inRange('0', '9').or(CharMatcher.is('.')).retainFrom(input);
参见http://code.google.com/p/guava-libraries/wiki/StringsExplained
它处理空输入,负数和小数(你需要在你的项目中包含Apache Commons Lang库,版本3.8或更高):
import org.apache.commons.lang3.RegExUtils;
result = RegExUtils.removeAll(input, "-?[^\\d.]");
图书馆参考资料:https://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/RegExUtils.html
试试下面的代码:
String str = "a12.334tyz.78x";
str = str.replaceAll("[^\\d.]", "");
现在str将包含“12.334.78”。
下面的代码应该删除所有非数字字符,并允许句号。
String newString = currentString.replaceAll("[\\D.]", "");
用java 8流替换它的方法:
public static void main(String[] args) throws IOException
{
String test = "ab19198zxncvl1308j10923.";
StringBuilder result = new StringBuilder();
test.chars().mapToObj( i-> (char)i ).filter( c -> Character.isDigit(c) || c == '.' ).forEach( c -> result.append(c) );
System.out.println( result ); //returns 19198.130810923.
}
推荐文章
- 在流中使用Java 8 foreach循环移动到下一项
- 访问限制:'Application'类型不是API(必需库rt.jar的限制)
- 用Java计算两个日期之间的天数
- 如何配置slf4j-simple
- Printf与std::字符串?
- 在Jar文件中运行类
- 带参数的可运行?
- 不区分大小写的“in”
- 我如何得到一个字符串的前n个字符而不检查大小或出界?
- 我可以在Java中设置enum起始值吗?
- Java中的回调函数
- 如何在PHP中截断字符串最接近于一定数量的字符?
- c#和Java中的泛型有什么不同?和模板在c++ ?
- 在Java中,流相对于循环的优势是什么?
- Jersey在未找到InjectionManagerFactory时停止工作