public String HandlePart(Match m, String part, CellFormatType type, StringBuilder desc) { if (part.Equals("@")) { numplace++; return "\u0000"; } return null; }
public String HandlePart(Match m, String part, CellFormatType type, StringBuilder desc) { int pos = desc.Length; char firstCh = part[0]; switch (firstCh) { case '[': if (part.Length < 3) break; if (_formatter.topmost != null) throw new ArgumentException( "Duplicate '[' times in format"); part = part.ToLower(); int specLen = part.Length - 2; _formatter.topmost = _formatter.AssignSpec(part[1], pos, specLen); return part.Substring(1, specLen); case 'h': case 'm': case 's': case '0': part = part.ToLower(); _formatter.AssignSpec(part[0], pos, part.Length); return part; case '\n': return "%n"; case '\"': part = part.Substring(1, part.Length - 2); break; case '\\': part = part.Substring(1); break; case '*': if (part.Length > 1) part = CellFormatPart.ExpandChar(part); break; // An escape we can let it handle because it can't have a '%' case '_': return null; } // Replace ever "%" with a "%%" so we can use printf //return PERCENTS.Matcher(part).ReplaceAll("%%"); //return PERCENTS.Replace(part, "%%"); return part; }
public String HandlePart(Match m, String part, CellFormatType type, StringBuilder desc) { int pos = desc.Length; char firstCh = part[0]; switch (firstCh) { case 's': case 'S': if (mStart >= 0) { for (int i = 0; i < mLen; i++) desc[mStart + i] = 'm'; mStart = -1; } return part.ToLower(); case 'h': case 'H': mStart = -1; hStart = pos; hLen = part.Length; return part.ToLower(); case 'd': case 'D': mStart = -1; if (part.Length <= 2) return part.ToLower(); else return part.ToLower().Replace('d', 'E'); case 'm': case 'M': mStart = pos; mLen = part.Length; return part.ToUpper(); case 'y': case 'Y': mStart = -1; if (part.Length == 3) part = "yyyy"; return part.ToLower(); case '0': mStart = -1; int sLen = part.Length; _formatter.sFmt = "%0" + (sLen + 2) + "." + sLen + "f"; return part.Replace('0', 'S'); case 'a': case 'A': case 'p': case 'P': if (part.Length > 1) { // am/pm marker mStart = -1; _formatter.ShowAmPm = true; _formatter.ShowM = char.ToLower(part[1]) == 'm'; // For some reason "am/pm" becomes AM or PM, but "a/p" becomes a or p _formatter.amPmUpper = _formatter.ShowM || char.IsUpper(part[0]); return "a"; } //noinspection fallthrough return null; default: return null; } }