package com.runt.android.utils; import com.intellij.openapi.project.Project; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; import java.util.regex.Matcher; import java.util.regex.Pattern; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; /** * Created by 赵振良 on 2020/8/6 */ public class Util { private static Pattern humpPattern = Pattern.compile("[A-Z]"); /** * 获取路径名 */ public static String getPackageDir(Project project, String dir) { String packageName = ""; DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); try { DocumentBuilder db = dbf.newDocumentBuilder(); Document doc = db.parse(project.getBasePath() + "/app/src/main/AndroidManifest.xml"); NodeList nodeList = doc.getElementsByTagName("manifest"); for (int i = 0; i < nodeList.getLength(); i++) { Node node = nodeList.item(i); Element element = (Element) node; packageName = element.getAttribute("package"); } } catch (Exception e) { e.printStackTrace(); } String split = packageName.replace(".","/"); String dirs[] = dir.split(split); if(dirs.length < 2){ return packageName; }else{ String resultPackage = packageName+(dirs[1].replace("/",".")); return resultPackage; } } /** * 获取包名 * @param project * @return */ public static String getPackageId(Project project){ String packageName = ""; DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); try { DocumentBuilder db = dbf.newDocumentBuilder(); Document doc = db.parse(project.getBasePath() + "/app/src/main/AndroidManifest.xml"); NodeList nodeList = doc.getElementsByTagName("manifest"); for (int i = 0; i < nodeList.getLength(); i++) { Node node = nodeList.item(i); Element element = (Element) node; packageName = element.getAttribute("package"); } } catch (Exception e) { e.printStackTrace(); } return packageName; } /** * 驼峰命名转下划线命名 * @param str * @return */ public static String humpToLine(String str) { Matcher matcher = humpPattern.matcher(str); StringBuffer sb = new StringBuffer(); while (matcher.find()) { matcher.appendReplacement(sb, "_" + matcher.group(0).toLowerCase()); } matcher.appendTail(sb); String result = sb.toString(); int length = result.length(); if(result.startsWith("_")){ result = result.substring(1,length); } return result; } }