Ejemplo n.º 1
0
 public String HandlePart(Match m, String part,
                     CellFormatType type, StringBuilder desc)
 {
     if (part.Equals("@"))
     {
         numplace++;
         return "\u0000";
     }
     return null;
 }
Ejemplo n.º 2
0
            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;
            }
Ejemplo n.º 3
0
            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;
                }
            }