format.java

来自「一个简单的visio程序。」· Java 代码 · 共 2,266 行 · 第 1/5 页

JAVA
2,266
字号
											sbb.append('#');
										count0 = tpp - sfp;
										sbb.append(fm);
										fm = sbb.toString();
									}
								}
								else
								{
									m = subfm1.substring(0,sfp-tpp).indexOf('0');
									if(m!=-1)
									{
										sb.append(subfm1.substring(0,m));
										for(n=m; n<sfp-tpp; n++)
											sb.append('0');
									}
									sb.append(tmp.substring(0,tpp));
								}
								int k = subfm1.length()-sfp - (tmp.length()-tpp);
								if(k > 0)
								{
									sb.append(tmp.substring(tpp, tmp.length()));
									sb.append(subfm1.substring((tmp.length()-tpp)+sfp, subfm1.length()));
								}
								else if(k == 0)
									sb.append(tmp.substring(tpp, tmp.length()));
								else
								{
									str = sb.toString();
									str = str.concat(tmp.substring(tpp));
									tpp = str.indexOf('.');
									sb = new StringBuffer();
									sb.append(tzRound(str,tpp+(subfm1.length()-sfp-1)));
								}
							}
							else
							{
								tpp = tmp.length();
								if(sfp - tpp <= 0)
								{
									if (!(new VString(tmp.substring(0,tpp)).dblValue() == 0 && subfm1.substring(sfp).indexOf('0') == -1 && !subfm1.equals("0.")))
									sb.append(tmp.substring(0,tpp));
									if(sfp-tpp < 0)
									{
										sbb = new StringBuffer();
										for (n = 0; n < tpp-sfp; n++)
											sbb.append('#');
										count0 = tpp - sfp;
										sbb.append(fm);
										fm = sbb.toString();
									}
								}
								else
								{
									m = subfm1.substring(0,sfp-tpp).indexOf('0');
									if(m!=-1)
									{
										sb.append(subfm1.substring(0,m));
										for(n=m; n<sfp-tpp; n++)
											sb.append('0');
										sb.append(tmp.substring(0,tpp));
									}
									else if (!(new VString(tmp.substring(0,tpp)).dblValue() == 0 && subfm1.substring(sfp).indexOf('0') == -1)) //MsgBox Format(0, "#0.00")
									{
										sb.append(subfm1.substring(0,sfp-tpp));
										sb.append(tmp.substring(0,tpp));
									}
								}
								sb.append(subfm1.substring(sfp,subfm1.length()));
							}
						}
						else
						{
							sfp = subfm1.length();
							int tpp = tmp.indexOf('.');
							if(tpp == -1)
								tpp = tmp.length();
							if(sfp - tpp < 0)
								sb.append(tzRound(tmp, tpp-1));
							else
							{
								m = subfm1.substring(0,sfp-tpp).indexOf('0');
								if(m!=-1)
								{
									sb.append(subfm1.substring(0,m));
									for(n=m; n<sfp-tpp; n++)
										sb.append('0');
									sb.append(tzRound(tmp,tpp-1));//.substring(0,tpp),tpp-1));
								}
								else if(!(new VString(tmp.substring(0,tpp)).dblValue() == 0 && subfm1.substring(sfp-tpp).indexOf('0') == -1)) //MsgBox Format(0, "#,##0")
								{
									sb.append(subfm1.substring(0,sfp-tpp));
									sb.append(tzRound(tmp,tpp-1));//.substring(0,tpp),tpp-1));
								}
							}
						}
						boolean god = false;
						StringBuffer isFact = new StringBuffer();
						if(sb.length() == 0) god = true;
						else {
						    for (int iii = 0; iii<sb.length(); iii++)
						        isFact.append('F');
						}
						int lt = 0;
						if(subfm1.length() != 0 && (sb.length() > subfm1.length()))
							lt = sb.length() - subfm1.length();
						for(n=0; n<fm.length(); n++)
						{
							c = fm.charAt(n);
							if(c != '0' && c != '#' && c != '.')
							{
								if(god) {
								    sb.append(c);
								    isFact.append('T');
								}
								else {
								    sb.insert(n+lt-count0, c);
								    isFact.insert(n+lt-count0, 'T');
								}
							}
						}

						if(yes) {
							int no = 0;
							lt = 0;
							if((sb.length()>fm.length()) && fm.length()!=0)
								lt = sb.length() - fm.length();
							for(i = 0; i<fmy.length(); i++)
							{
								char s = fmy.charAt(i);
								char ch;
								if(s == ',') no++;
								if(s == '\\')
								{
									ch = fmy.charAt(i+1);
									if (i>sb.length())
									{
										if (ch == '#') {
											sb.append(']');
											isFact.append('T');
										}
										else {
										    sb.append(ch);
										    isFact.append('T');
										}
										i++;
									}
									else {
										if(ch == '#') {
											sb.insert(i-no+lt,']');
											isFact.insert(i-no+lt, 'T');
										}
										else {
											sb.insert(i-no+lt, fmy.charAt(i+1));
											isFact.insert(i-no+lt, 'T');
										}
										no++;
										i++;
									}
								}
							}
						}
						str = sb.toString();
						if((cpp != -1 || isComma) && str.length()!=0)
							str = comma(str, isFact);
						sb = new StringBuffer();
						for(n = 0; n < str.length(); n++)
						{
							c = str.charAt(n);
							if (c != '#')
							{
								if(c == ']')
									sb.append('#');
								else
									sb.append(c);
							}
							else if(str.indexOf('.') != -1 && (n+1) <= str.length()-1 && (n+1) > str.indexOf('.') && str.charAt(n+1) == '0')
								sb.append('0');
						}
						str2 = sb.toString();
						if(str2.length()!=0 && str2.charAt(0) == ',')
							str2 = str2.substring(1);
					}

					if(tflag == true)
					{
						m = str2.indexOf('.');
						if(isNumOrDate(new VString(str2)))
						{
							if(new VString(str2).dblValue() == 0)
								return new VString(str2.substring(m));
							else if(new VString(str2.substring(0,m)).dblValue()==0)
							{
								if(c100 == '-')
									return new VString(new String("-").concat(str2.substring(m)));
								else
									return new VString(str2.substring(m));
							}
							else return new VString(str2);
						}
						else return new VString(str2);
					}
					if (c100 == '-')
						return new VString("-"+str1.concat(str2));
					sb = new StringBuffer();

					fmmm = str1.concat(str2); //format(False, "##0,,,##")
					if (isFalse) {
						for(i = 0; i < fmmm.length(); i++)
							if(fmmm.charAt(i) != '#' && fmmm.charAt(i) != ',')
								sb.append(fmmm.charAt(i));
						return new VString(sb.toString());
					}

					return new VString(str1.concat(str2));
				}
				else  return exp;
			}

			/*** user-defined date/time formats ***/

			else if (is_datformat(c,fm))
			{
				if(fm.indexOf('[') != -1)
					throw new HpException(5, "Invalid procedure call");
				fm = fmy;
				tmp = boolToStr(tmp);

				if(!isNumOrDate(new VString(tmp)))
				{
				    if (fm.indexOf('e') != -1 || fm.indexOf('E') != -1
				        || (fm.indexOf('t') != -1 && !fm.substring(fm.indexOf('t')).toLowerCase().startsWith("ttttt"))
				        || (fm.indexOf('T') != -1 && !fm.substring(fm.indexOf('T')).toUpperCase().startsWith("TTTTT")))
				        throw new HpException(5, "Invalid procedure call");
					return exp;
				}

				int l = fm.length();

				outer: for (; n < l;)
				{
					for (m = l; m > n; )
					{
						str = fm.substring(n,m);
						inter: for (i = 0; i < 30; i++)
						{
							if (dfn[i].equalsIgnoreCase(str))
							{
								if(str.charAt(0)=='a' || str.charAt(0)=='A')
								{
									if(dfn[i].charAt(0)==str.charAt(0))
										sb.append(def_dat(new VString(tmp), dfn[i]));
									else
										continue inter;
								}
								else
								{
									if (dfn[i].equalsIgnoreCase("hh") || dfn[i].equalsIgnoreCase("h"))
									{
										for (int mu = n+str.length(); mu < l;)
										{
											c = fm.charAt(mu);
											if (!is_datformat(c,fm.substring(mu))) mu++;
											else if(c=='m' || c == 'M')
											{
												if(mu+1==l)
												{
													fm=fm.substring(0,mu).concat("n");
													mu++;
												}
												else
												{
													fm=fm.substring(0,mu).concat("n")
														.concat(fm.substring(mu+1));
													if(fm.charAt(mu+1)=='m' || fm.charAt(mu+1)=='M')
													{
														if(mu+2==l)
														{
															fm=fm.substring(0,mu+1).concat("n");
															mu=l;
														}
														else
														{
															fm=fm.substring(0,mu+1).concat("n")
																.concat(fm.substring(mu+2));
															mu=l;
														}
													}
													else mu=l;
												}
											}
											else mu=l;
										}
										if ((fm.toLowerCase().indexOf("am/pm") != -1
										|| fm.toLowerCase().indexOf("ampm") != -1
										|| fm.toLowerCase().indexOf("a/p") != -1)
										//&& new VString(def_dat(new VString(tmp),dfn[i])).intValue()>12
										&& (int)strToDbl(def_dat(new VString(tmp), dfn[i])) > 12)
										{
											int fei = new VString(def_dat(new VString(tmp),dfn[i])).intValue()-12;
											if(dfn[i]=="hh")
												sb.append(fei<10?("0"+fei):(""+fei));
											if(dfn[i]=="h")
												sb.append(""+fei);
										}
										else if ((fm.toLowerCase().indexOf("am/pm") != -1
										|| fm.toLowerCase().indexOf("ampm") != -1
										|| fm.toLowerCase().indexOf("a/p") != -1)
										//&& new VString(def_dat(new VString(tmp),dfn[i])).intValue()==0
										&& (int)strToDbl(def_dat(new VString(tmp), dfn[i])) == 0
										&& fm.substring(n+str.length()).toLowerCase().indexOf('h') == -1)
										{
											sb.append(""+12);
										}
										else sb.append(def_dat(new VString(tmp),dfn[i]));
									}
									else
										sb.append(def_dat(new VString(tmp),dfn[i]));
								}
								n = n + str.length();
								continue outer;
							}
						}
						m--;
						if (m == n)
						{
							if (fm.charAt(n) == 'e' || fm.charAt(n) == 't' || fm.charAt(n) == 'E' || fm.charAt(n) == 'T')
								throw new HpException(5, "Invalid procedure call");
							else if(fm.charAt(n) == '\\')
							{
								if (n+1 <= fm.length()-1) {
									sb.append(fm.charAt(n+1));
									n++;
								}
							}
							else sb.append(fm.charAt(n));
						}
					}
					n ++;
				}
				str2 = sb.toString();
				return new VString(str1.concat(str2));
			}

			/*** a format expression for strings ***/

			else if (is_strformat(c))
			{
				int j,p;
				StringBuffer sbb = new StringBuffer();
				String tmp11 = tmp10;

				if (isEmpty) return new VString("");

				if(fm.indexOf('<')!=-1)
					tmp10 = tmp10.toLowerCase();
				else if(fm.indexOf('>')!=-1)
					tmp10 = tmp10.toUpperCase();

				if(fm.indexOf('@')==-1 && fm.indexOf('&')==-1)
					str2 = tmp10;
				else
				{
					for(i=0; i<fm.length(); i++)
					{
						c = fm.charAt(i);
						if(c == '@' || c == '&')
							sbb.append(c);
					}
					p = sbb.toString().length()-tmp10.length();
					if(fm.indexOf('!')!=-1)
					{
						for(i=0,j=0; i<fm.length(); )
						{
							c = fm.charAt(i);
							if(c == '<' || c == '>' || c == '!')
								i++;
							else if(c == '@' || c == '&')
							{
								if(j==tmp10.length())
								{
									if(c=='@')
									{
										sb.append(" ");
										i++;
									}
									else i++;
								}
								else
								{
									sb.append(tmp10.charAt(j));
									j++;
									i++;
								}
							}
							else
							{
								sb.append(fm.charAt(i));
								i++;
							}
						}
						if(p<0)
							sb.append(tmp10.substring(tmp10.length()-Math.abs(p)));
						str2 = sb.toString();
					}
					else
					{
						fm = fmmm;
						if(p<0)
						{
							str = tmp10.substring(0,Math.abs(p));
							tmp10 = tmp10.substring(Math.abs(p));
							for(i=0,j=0; i<fm.length(); )
							{
								c = fm.charAt(i);
								if(c == '<' || c == '>' || c == '!')
									i++;
								else if(c == '@' || c == '&')
								{
									if(j==tmp10.length())
									{
										if(c=='@')
										{
											sb.append(" ");
											i++;
										}
										else i++;
									}
									else
									{
										sb.append(tmp10.charAt(j));
										j++;
										i++;
									}
								}
								else
								{
									sb.append(fm.charAt(i));
									i++;
								}
							}
							sb.insert(0,str);
							str2 = sb.toString();
						}
						else{
							for(i=fm.length()-1,j=tmp10.length()-1; i>=0; )
							{
								c = fm.charAt(i);
								if(c == '<' || c == '>' || c == '!')
									i--;
								else if(c == '@' || c == '&')
								{
									if(j<0)
									{
										if(c=='@')

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?