java读取CSS文件

思路:读取CSS文件,将文件内容转为字符串,通过正则表达获取想要的结果

import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class CSSUtils {

    // 匹配花括号里的内容
    private static Pattern classPattern = Pattern.compile("\\{[^}]+}");

    private String fileStr;

    public CSSUtils(String path) {
        try {
            this.fileStr = readFileToString(path);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static String readFileToString(String path) throws IOException {
        FileReader reader = new FileReader(new File(path));
        StringBuilder stringBuilder = new StringBuilder();
        char[] buffer = new char[10];
        int size;
        while ((size = reader.read(buffer)) != -1) {
            stringBuilder.append(buffer, 0, size);
        }
        return stringBuilder.toString();
    }

    /**
     * 获取指定 class 的属性
     * @param className class 名称
     * @return
     */
    public String getClass(String className){
        if (this.fileStr == null || "".equals(this.fileStr)){
            return "";
        }
        // 匹配 class 内容 或者 Pattern.compile(className +"(\S*?)[^}]*}.*?|{.*? /}")  
        Pattern pattern = Pattern.compile("." + className +"( )*\\{[^}]+}");
        Matcher matcher = pattern.matcher(this.fileStr);
        StringBuilder stringBuilder = new StringBuilder("");
        while (matcher.find()){
            stringBuilder.append(matcher.group());
        }

        matcher = classPattern.matcher(stringBuilder.toString());
        stringBuilder = new StringBuilder("");
        while (matcher.find()){
            stringBuilder.append(matcher.group());
        }
        return stringBuilder.toString();
    }


    /**
     * 获取指定属性的值
     * @param className class 名称
     * @param attrName 属性 名称
     * @return
     */
    public String getCssAttribute(String className, String attrName){
        String res = this.getClass(className);
        if ("".equals(res)){
            return "";
        }
        // 匹配指定属性名
        Pattern  attrPattern = Pattern.compile("[^a-zA-Z\\-]" + attrName + ":\\s*([^;\\}]{1,100})\\s*[;\\}]{1}");
        Matcher matcher = attrPattern.matcher(res);
        res = "";
        while(matcher.find()){
            res = matcher.group(1);
        }
        return res;
    }


}

其中读取文件转字符串可以使用:

String fileStr = org.apache.commons.io.FileUtils.readFileToString(new File(path), StandardCharsets.UTF_8)

还可以使用  cssparser  

参考:java解析css文件工具类CssParserUtil.java_ntotl的博客-CSDN博客 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值