Atitit. . 软件命名空间与类名命名单词的统计程序设计v2

1. 要实现的目标1

1.1. Camel字符串模式的分词处理1

1.2. 多个大写的处理1

1.3. 数字与字幕的分离1

1.4. 其他/-_*.$斜杠中画线下划线性好点号美元字符字符的拆分1

1.5. 大写小写的合并2

1.6. 单数复数的合并2

1.7. 过滤数字及单个的字母2

1.8. 复数排除单词比如access,class2

1.9. 类要截取主类名,去除路径与扩展名2

2. Code----2

2.1. public class NamespaceUtil {3

1. 要实现的目标

1.1. Camel字符串模式的分词处理

1.2. 多个大写的处理

最后一个大写与后边相连

1.3. 数字与字幕的分离

1.4. 其他/-_*.$斜杠中画线下划线性好点号美元字符字符的拆分

1.5. 大写小写的合并

1.6. 单数复数的合并

1.7. 过滤数字及单个的字母

1.8. 复数排除单词比如access,class

1.9. 类要截取主类名,去除路径与扩展名

作者:: 老哇的爪子 Attilax 艾龙,  EMAIL:1466519819@qq.com

转载请注明来源: http://www.cnblogs.com/attilax/

2. Code----

package com.attilax.namespace;

import java.util.ArrayList;

import java.util.Collection;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

import net.sf.json.JSONArray;

import com.attilax.coll.ListX;

import com.attilax.collection.listUtil;

import com.attilax.io.dirx;

import com.attilax.io.filex;

import com.attilax.jar.JarFileView;

import com.attilax.json.JSONObject;

import com.attilax.lang.Closure;

import com.attilax.lang.MapX;

import com.attilax.lang.text.RegExpChar4splitor;

import com.attilax.lang.text.strUtil;

import com.attilax.office.excelUtil;

import com.attilax.text.CamelStrUtil;

import com.attilax.util.numUtil;

2.1. public class NamespaceUtil {

public static void main(String[] args) throws Exception {

//["com.attilax","camel","Gbnfm","hhh","comm"]

String s="com.attilax_camelXGbnfm-hhh/comm$123";

//s="CamelGbnfm";

List<String> li=toList_byDotByCase(s);

System.out.println( JSONObject.fromObject(li).toString(2));

String strPath = "D:\\workspace 空格\\AtiBrow\\lib";

//calcPkg(strPath);

calcCls(strPath);

System.out.println("--f");

}

private static void calcPkg(String strPath) throws Exception {

Map m=new NamespaceUtil().travePkgCalcNames(strPath);

List Li_table=listUtil.addAll(m);

System.out.println( com.attilax.json.JSONArray.fromObject(Li_table).toString(2));

excelUtil.toExcel("名字,计数", "name,count", Li_table, "c:\\calc_pkg_"+filex.getUUidName()+".xls");

}

final Map<String,Map> tab=new  HashMap<String, Map>();

public Map travePkgCalcNames(String strPath)

{

//final List<Map> m=new ArrayList<Map>();

//trav  jar file

new dirx().traveFile_noIncDir(strPath, new Closure () {

@Override

public Object execute(Object arg0) throws Exception {

String jar=(String) arg0;

if(!jar.toLowerCase().endsWith("jar"))

return jar;//continue

JarFileView jfv=new JarFileView(jar);

jfv.travePkg(jar, jar_file_trave_executor);

return null;

}

});

return tab;

}

final Closure jar_file_trave_executor=new Closure () {

@Override

public Object execute(Object arg0) throws Exception {

String pkg=arg0.toString();

if("META-INF/".toLowerCase().equals(pkg.toLowerCase()))

return null;

if(pkg.startsWith("META-INF"))return null;

pkg=pkg.replace("/", ".");

System.out.println(pkg);

List<String> nams=new ClassNameSplitor().split(pkg);

for ( String nam : nams) {

final String nam2=nam;

final String nam_key=strUtil.getSingleFmt(nam2, extMultiTrimWords).toLowerCase().trim();

if(filted(nam_key))

continue;

Map row=tab.get(nam_key);

if(row==null)

{

tab.put(nam_key,new HashMap (){{

this.put("name", nam_key);

this.put("count", 0);

}});//add new row

}

row=tab.get(nam_key);

//new HashMap<String,Integer>();

row.put( "count",MapX.get(row,"count",0)+1);

//m.putm.get(nam)

}

return null;

}

};

Atitit. . 软件命名空间与类名命名单词的统计程序设计v2的更多相关文章

  1. Atitit.软件命名空间  包的命名统计 及命名表(2000个名称) 方案java package

    Atitit.软件命名空间  包的命名统计 及命名表(2000个名称) 方案java package 1. 统计的lib jar 列表1 2. Code3 3. 常用包名按找字母排序(2000个)4 ...

  2. Atitit usrQBF2312 命名空间pkg 以及 api命名 spec规范

    Atitit usrQBF2312 命名空间pkg 以及 api命名 spec规范 简化英文1 常用类库sdk的命名单词统计表1 简化时间规则1 Namsspace nam spec,参照java . ...

  3. Atitit. 软件设计 模式 变量 方法 命名最佳实践 vp820 attilax总结命名表大全

    Atitit. 软件设计 模式 变量 方法 命名最佳实践 vp820 attilax总结命名表大全 1. #====提升抽象层次1 2. #----使用通用单词1 3. #===使用术语..1 4.  ...

  4. Atitit Atitit.软件兼容性原理----------API兼容 Qa7

    Atitit Atitit.软件兼容性原理----------API兼容 Qa7 1. 兼容性的重要性与反面教材1 2. 提升兼容性的原则2 2.1. What 与how 分离2 2.2. 老人老办法 ...

  5. Atitit.软件兼容性原理与实践 v5 qa2.docx

    Atitit.软件兼容性原理与实践   v5 qa2.docx 1. Keyword2 2. 提升兼容性的原则2 2.1. What 与how 分离2 2.2. 老人老办法,新人新办法,只新增,少修改 ...

  6. Atitit xml命名空间机制

    Atitit xml命名空间机制 命名冲突1 使用前缀来避免命名冲突2 使用命名空间(Namespaces)2 XML Namespace (xmlns) 属性2 默认的命名空间(Default Na ...

  7. Atitit.软件按钮与仪表盘(13)--全文索引操作--db数据库子系统mssql2008

    Atitit.软件按钮与仪表盘(13)--全文索引操作--db数据库子系统mssql2008 全文索引操作 4.全文索引和like语句比较 1 5.倒排索引 inverted index 1 2.SQ ...

  8. Atitit.软件button和仪表板(13)--全文索引操作--db数据库子系统mssql2008

    Atitit.软件button和仪表板(13)--全文索引操作--db数据库子系统mssql2008 全文索引操作 4.全文索引和like语句比較 1 5.倒排索引 inverted index 1 ...

  9. Atitit.软件开发的三层结构isv金字塔模型

    Atitit.软件开发的三层结构isv金字塔模型 第一层,Implements 层,着重与功能的实现.. 第二次,spec层,理论层,设计规范,接口,等.流程.方法论 顶层,val层,价值观层,原则, ...

随机推荐

  1. 谜题22:URL的愚弄

    本谜题利用了Java编程语言中一个很少被人了解的特性.请考虑下面的程序将会做些什么? public class BrowserTest { public static void main(String ...

  2. 【枚举约数】HackerRank - Week of Code 26 - Satisfactory Pairs

    题意:给你一个正整数n,问你存在多少个正整数对a,b(a<b),满足条件:存在正整数x,y,使得ax+by=n. 就预处理出n以内所有数的约数,然后暴力枚举a,暴力枚举x,然后枚举n-ax的所有 ...

  3. 【分块】bzoj3226 [Sdoi2008]校门外的区间

    题解见 : http://blog.csdn.net/iamzky/article/details/41088151 ORZ ZKY 2个懒标记:是否翻转,覆盖成了什么. 怎么处理一个块上有两个标记的 ...

  4. 【斜率优化】BZOJ1010 [HNOI2008]玩具装箱toy

    [题目大意] P教授有编号为1...N的N件玩具,第i件玩具长度为Ci.为了方便整理,P教授要求在一个一维容器中的玩具编号是连续的.如果将第i件玩具到第j个玩具放到一 个容器中,那么容器的长度将为 x ...

  5. Java小问题的解决方法系列

    1)IDEA中文乱码,解决方法:http://blog.csdn.net/zht666/article/details/8953516 2)卸载OpenJdk,http://my.oschina.ne ...

  6. Android Studio 生成aar包,并非debug包,而是release包

    1.编写Module,作为library 下面是需要发布的aar包,上面的是随意的project 2.app依赖myLibrary 2.1 设置Project Structure 2.2 app依赖M ...

  7. 一个页面如何放多个百度编辑器 Ueditor 1.4.3?PHP如何获取Ueditor 的值?

    问题1:一个页面如何放置多个Ueditor? 参考代码如下: <form  method="post" action="save.php"> < ...

  8. Inno Setup入门(一)——最简单的安装脚本

    地址:http://379910987.blog.163.com/blog/static/3352379720110238252326/ 一个最简单的安装脚本: 1.最简单的安装文件脚本: [setu ...

  9. “自适应”高度的 textarea 文本输入框

    写在前面 那啥,在我的那个很安静的一个 CSS 群(群号:82991297)突然看到有人在问一个问题. 使用 css 如何实现:textarea 如何实现高度自适应? 当时看到这个问题的时候,我脑中只 ...

  10. css的checkbox样式变化

    1.CSS body{font-family:'微软简行楷'} ul li{list-style:none; margin:10px;color:#4985d7;} .myCheck { displa ...