Atitit. . 软件命名空间与类名命名单词的统计程序设计v2
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;
}
};
转载于:https://www.cnblogs.com/attilax/p/5110254.html
Atitit. . 软件命名空间与类名命名单词的统计程序设计v2相关推荐
- 软件项目版本号的命名格式
软件项目版本号的命名格式 版本控制比较普遍的 3 种命名格式 : 一. GNU 风格的版本号命名格式 : 主版本号 . 子版本号 [. 修正版本号 [. 编译版本号 ]] 英文对照 : Major_V ...
- pycharm提示:Class names should use CamelCase convention(类名命名应遵守驼峰命名约定)
类名命名应遵守驼峰命名约定 改成这样就好了 python对于驼峰命名的定义是单词第一个字母要大写,单词与单词间不用符号连接
- 【版本管理】软件项目版本号的命名规则及格式
软件项目版本号的命名规则及格式 版本控制比较普遍的 3 种命名格式 : 一.GNU 风格的版本号命名格式 : 主版本号 . 子版本号 [. 修正版本号 [. 编译版本号 ]] Major_Versio ...
- Atitit.软件兼容性原理与实践 v3 q326.docx
Atitit.软件兼容性原理与实践 v3 q326.docx 1. 架构兼容性1 2. Api兼容性1 2.1. 新api vs 修改旧的api1 3. Web方面的兼容性(js,html)1 3 ...
- Atitit. 软件GUIbutton与仪表盘--webserver区--获取apache配置文件路径 linux and apache的启动、停止、重新启动...
Atitit. 软件GUIbutton与仪表盘--webserver区--获取apache配置文件路径 linux and apache的启动.停止.重新启动 能够通过"netstat ...
- Atitit.软件GUI按钮与仪表盘--db数据库区--导入mysql sql错误的解决之道
Atitit.软件GUI按钮与仪表盘--db数据库区--导入mysql sql错误的解决之道 Keyword::截取文本文件后部分 查看提示max_allowed_packet限制 Target Se ...
- 【转】获取命名空间、类名、方法名
string str = "";//取得当前方法命名空间str += "命名空间名:" + System.Reflection.MethodBase.GetCu ...
- 计算机软件版本如何命名,软件项目版本号的命名规则及格式
软件项目版本号的命名规则及格式 软件项目版本号的命名规则及格式 版本控制比较普遍的 3 种命名格式 : 一.GNU 风格的版本号命名格式 : 主版本号 . 子版本号 [. 修正版本号 [. 编译版本号 ...
- Atitit s2018.5 s5 doc list on com pc.docx v2
Atitit s2018.5 s5 doc list on com pc.docx Acc 112237553.docx Acc Acc 112237553.docx Acc baidu ne ...
最新文章
- hdu 2552 三足鼎立 关于tan的数论
- FVF的D3DFVF_XYZ和D3DFVF_XYZRHW的区别
- 【javascript】javascript设计模式mixin模式
- 自动解析复杂类的属性 实现归档或者进行序列化 反序列话的时候为每一个属性添加序列化方法的繁琐...
- spring 整合junit进行测试
- 160个Crackme039
- 入门第十课 Python语句的编写之while
- python迭代遍历目录下所以文件(Iterating through directories with Python)
- 三行代码,教你在python中将MP4转化为GIF,这不完胜迅捷视频转化器?
- 程序员面试逻辑题解析
- 代码设置环境变量QProcess类
- 《Adobe Photoshop CS5中文版经典教程(全彩版)》—第1课1.1节开始在Adobe Photoshop中工作...
- eureka自我保护机制EUREKA MAY BE INCORRECTLY CLAIMING INSTANCES ARE UP WHEN THEY‘RE NOT
- 赵小楼《天道》《遥远的救世主》深度解析(120)信息储备是必要的强势文化之一
- 第二层、三层、四层交换机原理
- html div中css设置平均水平分布,CSS - 水平和垂直分布div
- ANSYS经典界面保存单元解和节点解
- ABAP 金额内外部转换函数
- 工程师的基本功是什么?如何练习?—学习心得分享
- SEO的最最意图终究是啥
热门文章
- 无线轮播android,Android无限轮播Banner的实现
- 如何选择漏电保护器规格型号_施工现场三级电箱如何配置?图示详解,清晰明了!...
- 现代微波滤波器结构与设计_高功率射频及微波无源器件中的考虑和限制
- Linux 服务器性能参数指标总结
- 重磅!华为HCIE将于2021年5月30日改版,取消面试考试
- mysql 数值 字符 优化,教你如何进行Mysql数据类型优化
- mysql order by 日期_mysql order by基于时间的盲注
- Service Mesh 从“趋势”走向“无聊”
- 基于 RocketMQ Prometheus Exporter 打造定制化 DevOps 平台
- 上海2021年高考成绩排位查询,2021年上海各高中高考成绩排名及放榜最新消息