23,404
社区成员
发帖
与我相关
我的任务
分享
package jp19042502;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
public class MyClass
{
private static Map<String, StringBuilder>ListMap=new HashMap<String, StringBuilder>();
private static String gString="\"1123\",'123',1,1.1,2.1,true,false,{\"d\":11},[1,2,3,4,5],${return '1'},<xml>12312</xml>,ere2342qweqwe1,$,-1,-3.5,01,02a,02a.,01.0";
private static String cT_STR="字符串";
private static String cT_BOOL="布尔";
private static String cT_JSON="JSON";
private static String cT_GRV="groovy";
private static String cT_XML="XML";
private static String cT_INT="长整形";
private static String cT_FLOAT="浮点型";
private static String cT_UNKNOWN="未知";
private static void splitStr()
{
ListMap.put(cT_STR, new StringBuilder());
ListMap.put(cT_BOOL, new StringBuilder());
ListMap.put(cT_JSON, new StringBuilder());
ListMap.put(cT_GRV, new StringBuilder());
ListMap.put(cT_XML, new StringBuilder());
ListMap.put(cT_INT, new StringBuilder());
ListMap.put(cT_FLOAT, new StringBuilder());
ListMap.put(cT_UNKNOWN, new StringBuilder());
ArrayList<String>list=new ArrayList<String>();
StringBuilder AFGStr=new StringBuilder(gString);
int len=AFGStr.length();
if(len<=0) return;
if(AFGStr.charAt(0)==',')
{
len--;
AFGStr.delete(0, 1);
}
if(AFGStr.charAt(len-1)!=',')
{
len++;
AFGStr.append(',');
}
int iB=1,iYH=0;
list.clear();
for(int i=0;i<len;i++)
{
char c=AFGStr.charAt(i);
if((c=='\"') | (c=='\'') | (c=='[')) iYH++;
if(c==']') iYH--;
if((c==',') & (iYH %2==0))
{
String sTmp=AFGStr.substring(iB-1, i);
if(sTmp.length()>0)
list.add(sTmp);
iB=i+2;
iYH=0;
}
}
for(String s:list)
{
if(s.length()<=0) continue;
String sType=cT_STR;
char c=s.charAt(0);
if((c=='\"') | (c=='\'')) sType=cT_STR;
else if ((c=='[') | (c=='{')) sType=cT_JSON;
else if (c=='$')
{
if(s.length()<=1) sType=cT_UNKNOWN;
else if (s.charAt(1)=='{') sType=cT_GRV;
}
else if (c=='<')
{
int k=s.indexOf('>');
if(k>0)
{
String sName=s.substring(1, k);
if (s.indexOf("</"+sName)>0) sType=cT_XML;
}
}
else if((c=='-') | ("0123456789".indexOf(c)>0))
{
if(s.indexOf('.')>0)
{
sType=cT_FLOAT;
try {
Float.valueOf(s);
}
catch(Exception e)
{
sType=cT_STR;
}
}
else {
sType=cT_INT;
try {
Integer.valueOf(s);
}
catch(Exception e)
{
sType=cT_STR;
}
}
}
else if ((s.toLowerCase().equals("true")) | (s.toLowerCase().equals("false"))) sType=cT_BOOL;
else sType=cT_UNKNOWN;
StringBuilder sb=ListMap.get(sType);
if(sb.length()>0) sb.append(",");
sb.append(s);
}
System.out.print(ListMap.toString());
}
public static void main(String[] args)
{
// TODO 自动生成的方法存根
splitStr();
}
}