`

String 常用的字符串共通处理归纳一

阅读更多

可做成CommonFunctions的一些常用的字符串共通处理归纳一:字符串处理相关

 

/**
 * nullToBlank() : 参数为null的场合,转化成空
 * 
 * @param pValue : 字符串型参数
 * @return : null -> ""
 */
public static String nullToBlank(String pValue) {
    if(pValue == null || pValue.toLowerCase().equals("null")) {
        return "";
    } else {
        return pValue;
    }
}

 

/**
 * nullToZero() : 参数为null的场合,转化成0
 * 
 * @param pValue : 参数
 * @return : null -> 0
 */
public static String nullToZero(String pValue) {
    if (pValue == null || pValue.toLowerCase().equals("null") || pValue.equals("")) {
        return "0";
    } else {
        return pValue;
    }
}

 

/**
 * splitToArray() : 将字符串按目标字符切分成数组后返回
 *
 * @param pTargetStr : 字符串
 * @param pSplitFlg : 切分字符
 * @return : 数组
 */
public static String[] splitToArray(String pTargetStr, String pSplitFlg) {
    int index = -1;
    ArrayList<String> strArray = new ArrayList<String>();

    while ((index = pTargetStr.indexOf(pSplitFlg)) != -1) {
        strArray.add(pTargetStr.substring(0, index));
        pTargetStr = pTargetStr.substring(index + pSplitFlg.length());
    }

    strArray.add(pTargetStr);
    String[] retStr = (String[]) strArray.toArray(new String[strArray.size()]);

    return retStr;
}

 

/**
 * splitToVector() : 将字符串按目标字符切分成数组后返回
 *
 * @param pTargetStr : 字符串
 * @param pSplitFlg : 切分字符
 * @return : 数组
 */
public static Vector<String> splitToVector(String pTargetStr, String pSplitFlg) {

    Vector<String> retVal = null;
    String[] arrayText = splitToArray(pTargetStr, pSplitFlg);
    if (arrayText.length > 0) {
        retVal = new Vector<String>(arrayText.length);

        for (int i = 0; i < arrayText.length; i++) {
            retVal.addElement(arrayText[i]);
        }
    }
    return retVal;
}

 

/**
 * joinToString() : 将目标数组按指定字符切分,合成字符串后返回
 *
 * @param pVecOriginal : 数组
 * @param pSplitFlg : 切分字符
 * @return : 字符串
 */
public static String joinToString(Vector<String> pVecOriginal, String pSplitFlg) {
    String retVal = "";
    for (int i = 0; i < pVecOriginal.size(); i++) {
        retVal = retVal + pSplitFlg + pVecOriginal.elementAt(i).toString();
    }

    if (!(retVal.equals(""))) {
        retVal = retVal.substring(1);
    }

    return nullToBlank(retVal);
}

 

/**
 * paddingZeroL() : 在目标字符串的前面补齐0后返回
 *
 * @param pOriginalData : 字符串
 * @param paddingLength : 补齐后字符串长度
 * @return : 补齐后字符串
 */
public static String paddingZeroL(String pOriginalData, long pAllLength) {

    String retVal = pOriginalData;
    byte[] byteOfString = retVal.getBytes();
    long cnt = pAllLength - byteOfString.length;

    for (int i = 0; i < cnt; i++) {
        retVal = "0" + retVal;
    }

    return nullToBlank(retVal);
}

 

/**
 * paddingZeroR() : 在目标字符串的后面补齐0后返回
 *
 * @param pOriginalData : 字符串
 * @param paddingLength : 补齐后字符串长度
 * @return : 补齐后字符串
 */
public static String paddingZeroR(String pOriginalData, long pAllLength) {
    String retVal = pOriginalData;
    byte[] byteOfString = retVal.getBytes();
    long cnt = pAllLength - byteOfString.length;

    for (int i = 0; i < cnt; i++) {
        retVal = retVal + "0";
    }

    return nullToBlank(retVal);
}
 
public static final String PRE = "PRE";
public static final String END = "END";

/**
 * addStrPreOrEnd() : 在目标字符串的前面/后面补齐后返回
 *
 * @param pTargetStr : 目标字符串
 * @param pAddFlg : 前面/后面
 * @param pLength : 需要补齐的位数
 * @param pAddStr : 需要补齐的字符串
 * @return : 补齐后字符串
 */
public static String addStrPreOrEnd(String pTargetStr, String pAddFlg, int pLength, String pAddStr) {
    String strAppend = "";
    for (int i = 0; i < pLength; i++) {
        strAppend += pAddStr;
    }

    if (pAddFlg.equals(PRE)) {
        return strAppend + pTargetStr;

    } else if (pAddFlg.equals(END)) {
        return pTargetStr + strAppend;

    } else {
        return pTargetStr;
    }
}
 
/**
 * cutHeadderZero() : 将目标字符串的前面的0去掉后返回
 *
 * @param pTargetStr : 目标字符串
 * @return : 去0后的字符串
 */
public static String cutHeadderZero(String pTargetStr) {
    String retVal = pTargetStr;
    String temp = pTargetStr;

    while (retVal.length() > 0) {
        if (retVal.substring(0, 1).equals("0")) {
            retVal = retVal.substring(1);
        }

        if (retVal.equals(temp)) {
            break;
        }

        temp = retVal;
    }

    return retVal;
}
 
/**
 * getByteLengthByEncoding() : 按字符编码来计算字符串长度
 *
 * @param pTargetStr : 字符串
 * @param pEncoding : 编码(MS932/...)
 * @return : 字符串长度
 */
public static int getByteLengthByEncoding(String pTargetStr, String pEncoding) {
    try {
        if (pTargetStr == null) {
            return 0;
        }
        byte[] b = pTargetStr.getBytes(pEncoding);
        return b.length;

    } catch (java.io.UnsupportedEncodingException e) {
        return 0;
    }
}
 
/**
 * getByteLengthByCode() : 按Unicode/Shift_JIS来计算字符串长度
 *
 * @param pTargetStr : 字符串
 * @return : 字符串长度
 */
public static int getByteLengthByCode(String pTargetStr) {
    int lengthCnt = 0;

    for (int i = 0; i < pTargetStr.length(); i++) {
        int c = pTargetStr.charAt(i);
        // Shift_JIS: 0x0 ~ 0x80, 0xa0  , 0xa1   ~ 0xdf  , 0xfd   ~ 0xff
        // Unicode  : 0x0 ~ 0x80, 0xf8f0, 0xff61 ~ 0xff9f, 0xf8f1 ~ 0xf8f3
        if ( (c >= 0x0 && c < 0x81) || (c == 0xf8f0) || (c >= 0xff61 && c < 0xffa0) || (c >= 0xf8f1 && c < 0xf8f4)) {
            lengthCnt += 1;
        } else {
            lengthCnt += 2;
        }
    }

    return lengthCnt;
}

 

/**
 * getKeepLimitStr() : 当字符串超出指定长度时,以省略号形式显示
 *
 * @param pTargetStr : 字符串
 * @param pLength : 指定长度
 * @return : 字符串
 */
public static String getKeepLimitStr(String pTargetStr, int pLength) {

    int orgLength = getByteLengthByEncoding(pTargetStr, "MS932");

    if (orgLength > pLength) {
        pLength -= 2;
        int index = pLength / 2;
        String retVal = pTargetStr.substring(0, index);

        while (getByteLengthByEncoding(retVal, "MS932") < pLength) {
            retVal = retVal + pTargetStr.substring(index, index + 1);
            index++;
        }

        if (getByteLengthByEncoding(retVal, "MS932") > pLength) {
            retVal = retVal.substring(0, retVal.length() - 1);
        }

        return retVal + "…";
    }

    return pTargetStr;
}

 

 

分享到:
评论

相关推荐

    2.3 service-governance.pdf

    下面给出了一段示例代码,演示了如何在qlang中使用Go的字符串处理功能: ```go package main import ( "fmt" "log" "strings" "qlang.io/qlang.v2/qlang" "qlang.io/qlang/builtins" ) var strings_Exports...

    Java外文翻.doc

    该接口定义了一个 `accept(File dir, String name)` 方法,接受一个 `File` 对象和一个字符串参数,用于判断是否应该包含该文件名。通常情况下,该接口会被实现为匿名内部类。 ### 3. 文件操作实例 #### 使用匿名...

    菜鸟级SQL21天自学通

    根据提供的文件信息,我们可以归纳出一系列关于SQL的基础学习知识点,主要涵盖了SQL语言的基本概念、查询语句的应用、数据处理函数的使用以及表和视图的操作等方面。以下是对这些知识点的详细解析: ### 一、SQL...

    (2024)跳槽涨薪必备精选面试题.pdf

    - 由于 `new String("abc")` 创建的对象是在堆内存中,而字符串常量 `"abc"` 是在字符串常量池中,两者不相等。 2. **s2 == s3** 为 `true`。 - 假设 `s2` 为 `new String("abc").intern()` 的结果,`s3` 为 `"abc...

    数据结构与算法(JAVA语言版)

    - **字符串:** Java中的字符串是不可变的对象,使用`String`类来表示。字符串可以通过各种内置方法进行操作,如拼接、分割、替换等。 - **数组:** 数组是一种基本的数据结构,用于存储固定大小的同类型元素集合...

    JAVA_数据结构与算法(JAVA语言版)

    String类提供了丰富的字符串处理方法,如长度获取、子串提取、拼接等。 - **数组** - 数组是一种将相同类型的元素按照一定顺序排列的数据结构。Java中的数组可以通过下标访问元素,并且提供了一些内置的方法来操作...

    算法与数据结构

    - **字符串**:Java中字符串是不可变的对象,通过`String`类来表示。字符串操作是Java程序中常见的需求之一。 - **数组**:数组是用来存储固定大小的同类型元素的集合。数组在内存中连续存储,可以通过下标访问元素...

    数据结构与算法

    字符串的创建、拼接、分割等操作可以通过`String`类的方法实现。 - **数组:** - 数组是用于存储同类型元素的数据结构。Java中的数组可以通过下标访问元素,支持一维数组、多维数组。 **1.2 Java的面向对象特性**...

    java算法与数据结构

    - **String类**:不可变的字符串类,提供了一系列处理字符串的方法,如concat、substring、indexOf等。 - **StringBuilder/StringBuffer类**:可变的字符串类,适合在需要频繁修改字符串时使用。 **1.1.4 数组** -...

    java数据结构()

    - 常用的方法包括`length()`获取长度、`charAt(int index)`获取指定位置字符、`concat(String str)`连接字符串等。 - **1.1.4 数组** - 数组是一种用于存储同类型元素的集合数据类型。 - 创建数组的方式:`int[]...

    数据结构与算法java中文_草稿

    - **字符串**:用于处理文本数据,Java中字符串是不可变的,通过`String`类提供丰富的操作方法。 - **数组**:用于存储同类型元素的集合,支持索引访问,是实现多数数据结构的基础。 **1.2 Java的面向对象特性** -...

    数据结构与算法分析Java语言描述_第2版无密码

    - `StringBuilder` 和 `StringBuffer` 类提供可变的字符串对象。 - 常用方法:`length()`、`charAt(int index)`、`substring(int beginIndex, int endIndex)` 等。 - **1.1.4 数组** - **一维数组**:声明、初始...

    数据结构预算

    - `StringBuilder` 和 `StringBuffer` 可用于构建可变字符串。 - **数组** - 定义、初始化、访问元素的方法。 - 数组作为一种基本的数据结构,在程序设计中非常常见。 **1.2 Java的面向对象特性** - **类与...

    java数据结构与算法,

    - **String类**:不可变字符串。 - **StringBuilder/StringBuffer**:可变字符串。 - **1.1.4 数组** - **声明与初始化**:如 `int[] arr = new int[5];`。 - **访问与修改**:通过索引进行。 - **多维数组**...

Global site tag (gtag.js) - Google Analytics