From 3fbf71f9d96ec2d4d97de9d6a1dd4b51b56a85ec Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Mon, 28 Jul 2008 16:41:47 +0000 Subject: [PATCH] Fix for DataFormatter on some JVMs git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@680394 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/poi/hssf/usermodel/HSSFDataFormatter.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/java/org/apache/poi/hssf/usermodel/HSSFDataFormatter.java b/src/java/org/apache/poi/hssf/usermodel/HSSFDataFormatter.java index c1701e22b..e186cf73c 100644 --- a/src/java/org/apache/poi/hssf/usermodel/HSSFDataFormatter.java +++ b/src/java/org/apache/poi/hssf/usermodel/HSSFDataFormatter.java @@ -202,10 +202,12 @@ public class HSSFDataFormatter { // remove color formatting if present String formatStr = sFormat.replaceAll("\\[[a-zA-Z]*\\]", ""); - // try to extract special characters like currency - Matcher m = specialPatternGroup.matcher(formatStr); + // Try to extract special characters like currency + // Need to re-create the matcher each time, as the string + // will potentially change on each pass + Matcher m; try { - while(m.find()) { + while((m = specialPatternGroup.matcher(formatStr)).find()) { String match = m.group(); String symbol = match.substring(match.indexOf('$') + 1, match.indexOf('-')); if (symbol.indexOf('$') > -1) {