android的strings整理脚本
来源:互联网 发布:mac mini 换ssd 编辑:程序博客网 时间:2024/06/17 08:14
统一对String整理的工具,结构如下
代码
package com.owant.toollib;import java.io.BufferedReader;import java.io.File;import java.io.FileReader;import java.util.ArrayList;import java.util.List;import java.util.TreeSet;import java.util.regex.Matcher;import java.util.regex.Pattern;/** * Created by owant on 8/16/16. * 对Activity,layout的文件应用String资源的整理工具 * 使得String统一,而且结构清晰 */public class ValuesStringsUtil { public static String activityPath = "F:\\MyWorkAS\\NewHome\\app\\src\\main\\java\\com\\xinlianfeng\\android\\livehome\\activity\\DehumidifierSettingActivity.java"; public final static String layoutParentPath = "F:\\MyWorkAS\\NewHome\\app\\src\\main\\res\\layout\\"; public final static String valuesStringsPath = "F:\\MyWorkAS\\NewHome\\app\\src\\main\\res\\values\\strings.xml"; public static List<String> stringIds = new ArrayList<>(); public static TreeSet<String> stringSet = new TreeSet<>(); public static void main(String[] arg) { businessOnActivity(activityPath); } private static void businessOnActivity(String activityPath) { stringIds.clear(); stringSet.clear(); //获取Activity的String String fileContext = getFileContext(activityPath); getActivityStrings(fileContext); //获取Activity的Layout文件 List<String> layoutFileNames = getLayoutFileNames(fileContext); if (layoutFileNames.size() > 0) { for (String lf : layoutFileNames) { String layoutFilePath = layoutParentPath + lf + ".xml";// System.out.println("lf:" + lf); System.out.println("layout_file_path:\t" + layoutFilePath); getLayoutStrings(getFileContext(layoutFilePath)); } } String stringContext = getFileContext(valuesStringsPath); for (String key : stringIds) { String stringValue = getStringValue(stringContext, key); if (stringSet.add(stringValue)) { System.out.println(stringValue); } } } private static String getFileContext(String path) { StringBuffer context = new StringBuffer(); try { BufferedReader reader = new BufferedReader(new FileReader(new File(path))); byte[] buffer = new byte[1024]; String value; while ((value = reader.readLine()) != null) { context.append(value); } } catch (Exception e) { e.printStackTrace(); } return context.toString(); } private static void getActivityStrings(String context) { //查找activity中的String //getString(R.string.app_name); String pattern = "\\(R\\.string\\.(.+?)\\)"; Pattern r = Pattern.compile(pattern); Matcher m = r.matcher(context); while (m.find()) { stringIds.add(m.group(1)); } getLayoutFileNames(context); } private static List<String> getLayoutFileNames(String context) { List<String> layoutFileNames = new ArrayList<>(); //查找activity中包括的Layout文件 // setContentView(R.layout.activity_test_main); //inflate(R.layout.purify_error_dialog_layout, null);// String formatLayout = "\\(R\\.layout\\.(.+?)\\)"; String formatLayout = "R\\.layout\\.(.+?)[;,)]"; Pattern layoutPattern = Pattern.compile(formatLayout); Matcher layoutMatcher = layoutPattern.matcher(context); while (layoutMatcher.find()) { String groupText = layoutMatcher.group(1);// if (groupText.indexOf(",") > 0) {// groupText = groupText.substring(0, groupText.indexOf(","));// } layoutFileNames.add(groupText); } return layoutFileNames; } private static void getLayoutStrings(String context) { //"@string/tab_contorl" String pattern = "\"@string/(.+?)\""; Pattern r = Pattern.compile(pattern); Matcher m = r.matcher(context); while (m.find()) { stringIds.add(m.group(1)); } } private static String getStringValue(String context, String key) { // <string name="app_name">Base</string> String value = ""; String format = "<string name=\"{0}\">(.+?)</string>"; format = format.replace("{0}", key); Pattern pattern = Pattern.compile(format); Matcher matcher = pattern.matcher(context); while (matcher.find()) { value = matcher.group(0); } return value; }}
运行后得到
0 0
- android的strings整理脚本
- Android strings 的那些小事
- Android Studio轻松将零散字符串整理到strings.xml
- android strings.xml的特殊字符
- android strings.xml的特殊字符
- android strings.xml的特殊字符
- android strings.xml的特殊字符
- android strings.xml的特殊字符
- android strings.xml的特殊字符
- 脚本整理
- 脚本整理
- 第八章 Android开发规范整理以及Strings.xml定义规范化
- 工作中整理的 Tcl脚本 心得
- 整理数据库脚本的一些收获
- 自己整理的 actionscript3.0 常用脚本
- 整理文件比较的Shell脚本
- 整理文件比较的Shell脚本
- 清除svn文件的bat脚本整理
- DroidPlugin框架简单应用
- android:maxLines和android:ellipsize
- 01 移动的通信制式(点点入门,视频+笔记)
- 基于Zookeeper的服务注册与发现
- 浅谈 JavaScript 中定义变量时有无 var 声明的区别
- android的strings整理脚本
- html5中canvas线段绘制太阳花
- Intents and Intent Filters
- CSU 1769: 想打架吗?算我一个!所有人,都过来!(3)
- 编程之美2.21 只考加法的面试题
- TCP重传与确认机制
- [leetcode] 118. Pascal's Triangle
- hbase 协处理器
- 《Windows核心编程》之”Unicode vs ANSI“