diff --git a/common/src/main/java/com/genexus/LocalUtil.java b/common/src/main/java/com/genexus/LocalUtil.java index e1bd16474..bb2986c81 100644 --- a/common/src/main/java/com/genexus/LocalUtil.java +++ b/common/src/main/java/com/genexus/LocalUtil.java @@ -1562,6 +1562,8 @@ else if (a=='.' && !dotRemove) else if (a=='\\') { i++; + if (picture.charAt(i--) == '"') + pictureWithoutSymbols.append('"'); } } return pictureWithoutSymbols.toString(); @@ -1742,6 +1744,8 @@ else if (value.signum() == -1 && !originalPicture.startsWith("+")) if (originalPicture.startsWith("\\")) { negativeSign = -2; + if (preffix.equals("\"") && originalPicture.startsWith("\\\\")) + negativeSign--; return originalPicture.charAt(1) + addPictureSuffix(suffix, originalPicture, addPicturePreffix(preffix, originalPicture, alignRight(formatted, originalPictLength + negativeSign))); } return addPictureSuffix(suffix, originalPicture, addPicturePreffix(preffix, originalPicture, alignRight(formatted, originalPictLength + negativeSign))); @@ -1897,12 +1901,9 @@ private String removePicturePreffix(String suffix, String picture) private String addPicturePreffix(String suffix, String originalPicture, String value) { - if (originalPicture.startsWith(suffix)) - { - return suffix + value; - } - - return value; + if (originalPicture.startsWith(suffix) || (suffix.equals("\"") && originalPicture.startsWith("\\\\"))) + return suffix + value; + return value; } private String pictureToNumberFormat(String withoutSuffixPicture) diff --git a/java/src/test/java/com/genexus/TestCommonUtil.java b/java/src/test/java/com/genexus/TestCommonUtil.java index 949145651..8857ee67f 100644 --- a/java/src/test/java/com/genexus/TestCommonUtil.java +++ b/java/src/test/java/com/genexus/TestCommonUtil.java @@ -211,6 +211,13 @@ public void testFormat() { result = ui.getLocalUtil().format(bigDecimalValue, picture); Assert.assertEquals(expectedResult, result); + decimalValue = 87654321; + picture = "\\\" ZZ,ZZZ,ZZ9"; + expectedResult = "\\\" 87,654,321"; + + result = ui.getLocalUtil().format(decimalValue, picture); + Assert.assertEquals(expectedResult, result); + double doubleValue = 123456.12; doLocalUtilFormatAssert(ui, doubleValue, new BigDecimal(doubleValue), "ZZZZZZZZZZ9.ZZZZZZ", " 123456.120000"); doLocalUtilFormatAssert(ui, doubleValue, new BigDecimal(doubleValue), "99999999999.999999", "00000123456.120000");