我正在解析数字数据,有时我得到负数,当没有任何可用数据时,我得到--
我创建了一个类来清理数字并通过命令传递它们:
output = output.replaceAll("\\-", " ");
我认为它工作得很好,因为双击不见了,但现在我意识到我的所有负数看起来都是积极的。我不确定如何处理它,有没有办法明确说明两个破折号是否相互存在以取代它?或者只有当它后跟一个数字时才有接受破折号的方法吗?
请帮忙。
谢谢!
答案 0 :(得分:3)
您可以直接替换“ - ”,这样负数就不会受到影响吗?
output = output.replaceAll("\\-\\-", " ");
或只是
output = output.replace("--", " ");
答案 1 :(得分:1)
用双破折号替换正则表达式:
output = output.replaceAll("\\-\\-", " ");
答案 2 :(得分:1)
Scanner可能是解析输入的更简单方法。 Scanner接受各种不同的序列(String,File,PrintStream(如System.in)和我认为的其他类型),并且可以帮助您轻松地解析所提供的序列。
在您的情况下,扫描仪可让您使用nextInt()方法轻松获取数值:
String fileName = "sample.txt";
Scanner scanner = new Scanner(new File(fileName));
while (scanner.hasNext()) {
if (scanner.hasNextInt())
System.out.println(scanner.nextInt());
else
System.out.println(scanner.next());
}
你可以使用它,然后构造只是字符串的数据,并将它们与实际数字的值分开。从长远来看,这可能会更容易使用。
我发布这个的原因是要指出可能有其他方法来解析数据。这可能不是你现在所需要的,但它可能会在将来派上用场。当/如果您重新考虑重构此代码时,它可能是一个可行的选择。祝你好运!
答案 3 :(得分:0)
尝试
output = output.replaceAll("--", " ");
要么
output=output.replaceAll("-{2}");
任何一种都可以使用,正如REPL的clojure代码所证明的那样。 (它使用java字符串处理)。
用户=> (re-seq#“ - ”negdata)(“ - ”) 用户=> (re-seq#“ - {2}”negdata)(“ - ”) 用户=> (println negdata) - 2.0 nil user => (println posdata) -1.0无