提交 e8b89549 编写于 作者: I igerasim

8236201: Better Scanner conversions

Reviewed-by: ahgross, rhalade, rriggs, skoivu, smarks, andrew
上级 e4d2cb09
/* /*
* Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2003, 2020, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
...@@ -425,7 +425,7 @@ public final class Scanner implements Iterator<String>, Closeable { ...@@ -425,7 +425,7 @@ public final class Scanner implements Iterator<String>, Closeable {
// here but what can we do? The final authority will be // here but what can we do? The final authority will be
// whatever parse method is invoked, so ultimately the // whatever parse method is invoked, so ultimately the
// Scanner will do the right thing // Scanner will do the right thing
String digit = "((?i)["+radixDigits+"]|\\p{javaDigit})"; String digit = "((?i)["+radixDigits+"\\p{javaDigit}])";
String groupedNumeral = "("+non0Digit+digit+"?"+digit+"?("+ String groupedNumeral = "("+non0Digit+digit+"?"+digit+"?("+
groupSeparator+digit+digit+digit+")+)"; groupSeparator+digit+digit+digit+")+)";
// digit++ is the possessive form which is necessary for reducing // digit++ is the possessive form which is necessary for reducing
...@@ -475,7 +475,7 @@ public final class Scanner implements Iterator<String>, Closeable { ...@@ -475,7 +475,7 @@ public final class Scanner implements Iterator<String>, Closeable {
private Pattern decimalPattern; private Pattern decimalPattern;
private void buildFloatAndDecimalPattern() { private void buildFloatAndDecimalPattern() {
// \\p{javaDigit} may not be perfect, see above // \\p{javaDigit} may not be perfect, see above
String digit = "([0-9]|(\\p{javaDigit}))"; String digit = "(([0-9\\p{javaDigit}]))";
String exponent = "([eE][+-]?"+digit+"+)?"; String exponent = "([eE][+-]?"+digit+"+)?";
String groupedNumeral = "("+non0Digit+digit+"?"+digit+"?("+ String groupedNumeral = "("+non0Digit+digit+"?"+digit+"?("+
groupSeparator+digit+digit+digit+")+)"; groupSeparator+digit+digit+digit+")+)";
...@@ -1188,25 +1188,25 @@ public final class Scanner implements Iterator<String>, Closeable { ...@@ -1188,25 +1188,25 @@ public final class Scanner implements Iterator<String>, Closeable {
// These must be literalized to avoid collision with regex // These must be literalized to avoid collision with regex
// metacharacters such as dot or parenthesis // metacharacters such as dot or parenthesis
groupSeparator = "\\" + dfs.getGroupingSeparator(); groupSeparator = "\\x{" + Integer.toHexString(dfs.getGroupingSeparator()) + "}";
decimalSeparator = "\\" + dfs.getDecimalSeparator(); decimalSeparator = "\\x{" + Integer.toHexString(dfs.getDecimalSeparator()) + "}";
// Quoting the nonzero length locale-specific things // Quoting the nonzero length locale-specific things
// to avoid potential conflict with metacharacters // to avoid potential conflict with metacharacters
nanString = "\\Q" + dfs.getNaN() + "\\E"; nanString = Pattern.quote(dfs.getNaN());
infinityString = "\\Q" + dfs.getInfinity() + "\\E"; infinityString = Pattern.quote(dfs.getInfinity());
positivePrefix = df.getPositivePrefix(); positivePrefix = df.getPositivePrefix();
if (positivePrefix.length() > 0) if (positivePrefix.length() > 0)
positivePrefix = "\\Q" + positivePrefix + "\\E"; positivePrefix = Pattern.quote(positivePrefix);
negativePrefix = df.getNegativePrefix(); negativePrefix = df.getNegativePrefix();
if (negativePrefix.length() > 0) if (negativePrefix.length() > 0)
negativePrefix = "\\Q" + negativePrefix + "\\E"; negativePrefix = Pattern.quote(negativePrefix);
positiveSuffix = df.getPositiveSuffix(); positiveSuffix = df.getPositiveSuffix();
if (positiveSuffix.length() > 0) if (positiveSuffix.length() > 0)
positiveSuffix = "\\Q" + positiveSuffix + "\\E"; positiveSuffix = Pattern.quote(positiveSuffix);
negativeSuffix = df.getNegativeSuffix(); negativeSuffix = df.getNegativeSuffix();
if (negativeSuffix.length() > 0) if (negativeSuffix.length() > 0)
negativeSuffix = "\\Q" + negativeSuffix + "\\E"; negativeSuffix = Pattern.quote(negativeSuffix);
// Force rebuilding and recompilation of locale dependent // Force rebuilding and recompilation of locale dependent
// primitive patterns // primitive patterns
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册