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层,价值观层,原则, ...
随机推荐
- cogs 2554. [福利]可持久化线段树
题目链接 cogs 2554. [福利]可持久化线段树 题解 没有 代码 #include<cstdio> #include<cstring> #include<algo ...
- luogu P1291 [SHOI2002]百事世界杯之旅
题目链接 luogu P1291 [SHOI2002]百事世界杯之旅 题解 设\(f[k]\)表示还有\(k\)个球员没有收集到的概率 再买一瓶,买到的概率是\(k/n\),买不到的概率是\((n-k ...
- 【Heap-Dijkstra】【分层图】bzoj2763 [JLOI2011]飞行路线
建立k+1张图, 在图与图之间,若在原图中x到y有边,就建立从 第i层的x 到 i+1层的y 建边,权值为0.代表一次免费机会. 由于一旦到了第i+1层的图里,则无法回到之前的层,所以免费最多只有k次 ...
- Java高级架构师(一)第18节:X-gen所需service、web层模板
以X-gen的Controller为例: package $#modulePackge#.web; import org.springframework.beans.factory.annotatio ...
- winform 窗体实现增删改查(CRUD)共用模式
转载:http://www.csframework.com/archive/2/arc-2-20110617-1632.htm 高度封装的编辑窗体 http://www.cnblogs.com/wuh ...
- Qemu 有用的链接
Qemu下载和编译 Download https://en.wikibooks.org/wiki/QEMU/Linux https://en.wikibooks.org/wiki/QEMU/Insta ...
- [Android 新特性] 谷歌发布Android Studio开发工具1.0正式版(组图) 2014-12-09 09:35:40
Android Studio是谷歌于13年I/O大会推出的Android开发环境,基于IntelliJ IDEA. 类似 Eclipse ADT,Android Studio 提供了集成的Androi ...
- 【转载】游戏并发编程的讨论 & Nodejs并发性讨论 & 语法糖术语
知乎上这篇文章对于游戏后端.性能并发.nodejs及scala等语言的讨论,很好,值得好好看. https://www.zhihu.com/question/21971645 经常了解一些牛逼技术人员 ...
- EL表达式介绍(2)
1. EL关系运算符: 关系运算符 说明 范例 结果 == 或 eq 等于 ${5==5}或${5eq5} true != 或 ne 不等于 ${5!=5}或${5ne5} false < 或 ...
- Laravel 5系列教程二:路由,视图,控制器工作流程
免费视频教程地址https://laravist.com/series/laravel-5-basic 上一篇教程我们走了那么长的路,终于把Laravel安装好了,这一篇教程我们就要进入Laravel ...