通用String工具类

总结了项目中用到的stringUtils, 一些常见的功能都有, 当然,驼峰转换,大家也可用用guava的包,
欢迎小伙伴们在留言栏,留言新功能

package com.zheng.common.util;


import org.apache.commons.lang.StringUtils;

import java.util.regex.Matcher;
import java.util.regex.Pattern;


public class StringUtil {

    private static Pattern linePattern = Pattern.compile("_(\\w)");
    private static Pattern humpPattern = Pattern.compile("[A-Z]");

    /**
     * 下划线转驼峰
     * @param str
     * @return
     */
    public static String lineToHump(String str) {
        if (null == str || "".equals(str)) {
            return str;
        }
        str = str.toLowerCase();
        Matcher matcher = linePattern.matcher(str);
        StringBuffer sb = new StringBuffer();
        while (matcher.find()) {
            matcher.appendReplacement(sb, matcher.group(1).toUpperCase());
        }
        matcher.appendTail(sb);

        str = sb.toString();
        str = str.substring(0, 1).toUpperCase() + str.substring(1);

        return str;
    }

    /**
     * 驼峰转下划线,效率比上面高
     * @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);
        return sb.toString();
    }

    /**
     * 驼峰转下划线(简单写法,效率低于{@link #humpToLine(String)})
     * @param str
     * @return
     */
    public static String humpToLine2(String str) {
        return str.replaceAll("[A-Z]", "_$0").toLowerCase();
    }

    /**
     * 首字母转小写
     * @param s
     * @return
     */
    public static String toLowerCaseFirstOne(String s) {
        if (StringUtils.isBlank(s)) {
            return s;
        }
        if (Character.isLowerCase(s.charAt(0))) {
            return s;
        } else {
            return (new StringBuilder()).append(Character.toLowerCase(s.charAt(0))).append(s.substring(1)).toString();
        }
    }

    /**
     * 首字母转大写
     * @param s
     * @return
     */
    public static String toUpperCaseFirstOne(String s) {
        if (StringUtils.isBlank(s)) {
            return s;
        }
        if (Character.isUpperCase(s.charAt(0))) {
            return s;
        } else {
            return (new StringBuffer()).append(Character.toUpperCase(s.charAt(0))).append(s.substring(1)).toString();
        }
    }

    /**
     * object转String
     * @param object
     * @return
     */
    public static String getString(Object object) {
        return getString(object, "");
    }

    public static String getString(Object object, String defaultValue) {
        if (null == object) {
            return defaultValue;
        }
        try {
            return object.toString();
        } catch (Exception e) {
            return defaultValue;
        }
    }

    /**
     * object转Integer
     * @param object
     * @return
     */
    public static int getInt(Object object) {
        return getInt(object, -1);
    }

    public static int getInt(Object object, Integer defaultValue) {
        if (null == object) {
            return defaultValue;
        }
        try {
            return Integer.parseInt(object.toString());
        } catch (Exception e) {
            return defaultValue;
        }
    }

    /**
     * object转Boolean
     * @param object
     * @return
     */
    public static boolean getBoolean(Object object) {
        return getBoolean(object, false);
    }

    public static boolean getBoolean(Object object, Boolean defaultValue) {
        if (null == object) {
            return defaultValue;
        }
        try {
            return Boolean.parseBoolean(object.toString());
        } catch (Exception e) {
            return defaultValue;
        }
    }

}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个基本的 Elasticsearch 工具类,可以用于与 Elasticsearch 交互: ```java import org.apache.http.HttpHost; import org.elasticsearch.action.bulk.BulkRequest; import org.elasticsearch.action.bulk.BulkResponse; import org.elasticsearch.action.delete.DeleteRequest; import org.elasticsearch.action.delete.DeleteResponse; import org.elasticsearch.action.get.GetRequest; import org.elasticsearch.action.get.GetResponse; import org.elasticsearch.action.index.IndexRequest; import org.elasticsearch.action.index.IndexResponse; import org.elasticsearch.action.search.SearchRequest; import org.elasticsearch.action.search.SearchResponse; import org.elasticsearch.client.RestClient; import org.elasticsearch.client.RestHighLevelClient; import org.elasticsearch.common.xcontent.XContentType; import org.elasticsearch.index.query.QueryBuilder; import org.elasticsearch.index.query.QueryBuilders; import org.elasticsearch.search.SearchHit; import org.elasticsearch.search.builder.SearchSourceBuilder; import java.io.IOException; import java.util.List; import java.util.Map; public class ElasticsearchUtil { private RestHighLevelClient client; public ElasticsearchUtil(String host, int port) { client = new RestHighLevelClient(RestClient.builder(new HttpHost(host, port, "http"))); } public void close() throws IOException { client.close(); } public boolean indexExists(String index) throws IOException { return client.indices().exists(new GetIndexRequest(index), RequestOptions.DEFAULT); } public boolean createIndex(String index) throws IOException { CreateIndexRequest request = new CreateIndexRequest(index); request.settings(Settings.builder() .put("index.number_of_shards", 3) .put("index.number_of_replicas", 2) ); request.mapping("properties", "{\n" + " \"name\": {\n" + " \"type\": \"text\"\n" + " },\n" + " \"age\": {\n" + " \"type\": \"integer\"\n" + " }\n" + "}", XContentType.JSON); request.alias(new Alias("my_alias")); CreateIndexResponse response = client.indices().create(request, RequestOptions.DEFAULT); return response.isAcknowledged(); } public boolean deleteIndex(String index) throws IOException { DeleteIndexRequest request = new DeleteIndexRequest(index); AcknowledgedResponse response = client.indices().delete(request, RequestOptions.DEFAULT); return response.isAcknowledged(); } public boolean documentExists(String index, String id) throws IOException { GetRequest getRequest = new GetRequest(index, id); getRequest.fetchSourceContext(new FetchSourceContext(false)); getRequest.storedFields("_none_"); return client.exists(getRequest, RequestOptions.DEFAULT); } public boolean createDocument(String index, String id, Map<String, Object> source) throws IOException { IndexRequest request = new IndexRequest(index); if (id != null) { request.id(id); } request.source(source); IndexResponse response = client.index(request, RequestOptions.DEFAULT); return response.getResult() == DocWriteResponse.Result.CREATED; } public boolean updateDocument(String index, String id, Map<String, Object> source) throws IOException { UpdateRequest request = new UpdateRequest(index, id); request.doc(source); UpdateResponse response = client.update(request, RequestOptions.DEFAULT); return response.getResult() == DocWriteResponse.Result.UPDATED; } public boolean deleteDocument(String index, String id) throws IOException { DeleteRequest request = new DeleteRequest(index, id); DeleteResponse response = client.delete(request, RequestOptions.DEFAULT); return response.getResult() == DocWriteResponse.Result.DELETED; } public Map<String, Object> getDocument(String index, String id) throws IOException { GetRequest getRequest = new GetRequest(index, id); GetResponse response = client.get(getRequest, RequestOptions.DEFAULT); if (response.isExists()) { return response.getSource(); } else { return null; } } public List<Map<String, Object>> searchDocument(String index, String field, String value) throws IOException { QueryBuilder queryBuilder = QueryBuilders.matchQuery(field, value); SearchSourceBuilder sourceBuilder = new SearchSourceBuilder(); sourceBuilder.query(queryBuilder); SearchRequest searchRequest = new SearchRequest(index); searchRequest.source(sourceBuilder); SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT); List<Map<String, Object>> result = new ArrayList<>(); for (SearchHit hit : searchResponse.getHits().getHits()) { result.add(hit.getSourceAsMap()); } return result; } public boolean bulkCreateDocuments(String index, List<Map<String, Object>> sources) throws IOException { BulkRequest request = new BulkRequest(); for (Map<String, Object> source : sources) { IndexRequest indexRequest = new IndexRequest(index); indexRequest.source(source); request.add(indexRequest); } BulkResponse response = client.bulk(request, RequestOptions.DEFAULT); return !response.hasFailures(); } public boolean bulkUpdateDocuments(String index, List<Map<String, Object>> sources) throws IOException { BulkRequest request = new BulkRequest(); for (Map<String, Object> source : sources) { String id = (String) source.remove("id"); UpdateRequest updateRequest = new UpdateRequest(index, id); updateRequest.doc(source); request.add(updateRequest); } BulkResponse response = client.bulk(request, RequestOptions.DEFAULT); return !response.hasFailures(); } public boolean bulkDeleteDocuments(String index, List<String> ids) throws IOException { BulkRequest request = new BulkRequest(); for (String id : ids) { DeleteRequest deleteRequest = new DeleteRequest(index, id); request.add(deleteRequest); } BulkResponse response = client.bulk(request, RequestOptions.DEFAULT); return !response.hasFailures(); } } ``` 这个工具类使用 Elasticsearch 的 Java High Level REST Client,支持创建、删除索引,增删改查文档,以及批量操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值