Atitit. . 软件命名空间与类名命名单词的统计程序设计v2
Atitit. . 软件命名空间与类名命名单词的统计程序设计v2
1.4. 其他/-_*.$斜杠中画线下划线性好点号美元字符字符的拆分1
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的更多相关文章
- Atitit.软件命名空间 包的命名统计 及命名表(2000个名称) 方案java package
Atitit.软件命名空间 包的命名统计 及命名表(2000个名称) 方案java package 1. 统计的lib jar 列表1 2. Code3 3. 常用包名按找字母排序(2000个)4 ...
- Atitit usrQBF2312 命名空间pkg 以及 api命名 spec规范
Atitit usrQBF2312 命名空间pkg 以及 api命名 spec规范 简化英文1 常用类库sdk的命名单词统计表1 简化时间规则1 Namsspace nam spec,参照java . ...
- Atitit. 软件设计 模式 变量 方法 命名最佳实践 vp820 attilax总结命名表大全
Atitit. 软件设计 模式 变量 方法 命名最佳实践 vp820 attilax总结命名表大全 1. #====提升抽象层次1 2. #----使用通用单词1 3. #===使用术语..1 4. ...
- Atitit Atitit.软件兼容性原理----------API兼容 Qa7
Atitit Atitit.软件兼容性原理----------API兼容 Qa7 1. 兼容性的重要性与反面教材1 2. 提升兼容性的原则2 2.1. What 与how 分离2 2.2. 老人老办法 ...
- Atitit.软件兼容性原理与实践 v5 qa2.docx
Atitit.软件兼容性原理与实践 v5 qa2.docx 1. Keyword2 2. 提升兼容性的原则2 2.1. What 与how 分离2 2.2. 老人老办法,新人新办法,只新增,少修改 ...
- Atitit xml命名空间机制
Atitit xml命名空间机制 命名冲突1 使用前缀来避免命名冲突2 使用命名空间(Namespaces)2 XML Namespace (xmlns) 属性2 默认的命名空间(Default Na ...
- Atitit.软件按钮与仪表盘(13)--全文索引操作--db数据库子系统mssql2008
Atitit.软件按钮与仪表盘(13)--全文索引操作--db数据库子系统mssql2008 全文索引操作 4.全文索引和like语句比较 1 5.倒排索引 inverted index 1 2.SQ ...
- Atitit.软件button和仪表板(13)--全文索引操作--db数据库子系统mssql2008
Atitit.软件button和仪表板(13)--全文索引操作--db数据库子系统mssql2008 全文索引操作 4.全文索引和like语句比較 1 5.倒排索引 inverted index 1 ...
- Atitit.软件开发的三层结构isv金字塔模型
Atitit.软件开发的三层结构isv金字塔模型 第一层,Implements 层,着重与功能的实现.. 第二次,spec层,理论层,设计规范,接口,等.流程.方法论 顶层,val层,价值观层,原则, ...
随机推荐
- 【数论】【快速幂】CODEVS 2952 细胞分裂 2
裸快速幂取模,背诵模板用. #include<cstdio> using namespace std; typedef long long LL; LL n=,m,q; LL Quick_ ...
- Problem L: 输出200-299之间的所有素数
#include<stdio.h> #include<math.h> int main() { int count,m,n,i; count=; ;m<;m++) { n ...
- Vue 单页应用:记事本
若文章中存在内容无法加载的情况,请移步作者其他博客. 简书 CSDN 最近在看 Vue 的时候,别人给我安利了一个国外的小案例,通过 Vue 和 Vuex 来实现一个记事本. 仔细剖析下,发现“麻雀虽 ...
- ZK的数据结构特点
ZK的数据结构特点 ZooKeeper这种数据结构有如下这些特点: 1. 每个子目录项如NameService都被称作znode,这个znode是被它所在的路径唯一标识,如Server1这个znode ...
- css字体font-family
1."Arial" 2."Microsoft YaHei" 3."黑体" 4."宋体" 5.sans-serif 6.T ...
- XSS-Proxy
关于XSS(cross site scripting),相信对此有过研究的人已经感受到了它的“魅力”,权威机构也公布了最近的安全数据,xss已经上升为第二大网络安全隐患: 于此我想通过此文浅析一下xs ...
- linux内核分析笔记----上半部与下半部(下)
接着上节的来,我们在上节说了软中断和tasklet,那这最后就是工作队列了哦.. 工作队列和前面讨论的其他形式都不相同,它可以把工作推后,交由一个内核线程去执行----该工作总是会在进程上下文执行.这 ...
- pgmagick,pil不保存图片并且获取图片二进制数据记录
PIL和pgmagick都是python中图像处理的库,只不过PIL功能更强大 pgmagick和PIL中对数据进行调整后经常需要调用write或者save方法保存图片,然后在读取图片的内容,这样很麻 ...
- Spark(二) -- Spark简单介绍
spark是什么? spark开源的类Hadoop MapReduce的通用的并行计算框架 spark基于map reduce算法实现的分布式计算 拥有Hadoop MapReduce所具有的优点 但 ...
- Python 爬基金数据
爬科学基金共享服务网中基金数据 #coding=utf-8 import json import requests from lxml import etree from HTMLParser imp ...