java stringutils api_StringUtils.java 工具类

package org.apache.commons.lang;

import java.util.ArrayList;

import java.util.Collection;

import java.util.Iterator;

import java.util.List;

public class StringUtils {

//

Performance testing notes (JDK 1.4, Jul03, scolebourne)

//

Whitespace:

//

Character.isWhitespace() is faster than WHITESPACE.indexOf()

// where

WHITESPACE is a string of all whitespace characters

//

// Character

access:

//

String.charAt(n) versus toCharArray(), then array[n]

//

String.charAt(n) is about 15% worse for a 10K string

// They are

about equal for a length 50 string

//

String.charAt(n) is about 4 times better for a length 3

string

//

String.charAt(n) is best bet overall

//

//

Append:

//

String.concat about twice as fast as StringBuffer.append

// (not sure

who tested this)

public

static final String EMPTY = "";

public

static final int INDEX_NOT_FOUND = -1;

private

static final int PAD_LIMIT = 8192;

public

StringUtils() {

super();

}

// Empty

checks

//-----------------------------------------------------------------------

public

static boolean isEmpty(String str) {

return str == null || str.length() == 0;

}

public

static boolean isNotEmpty(String str) {

return !StringUtils.isEmpty(str);

}

public

static boolean isBlank(String str) {

int strLen;

if (str == null || (strLen = str.length()) == 0) {

return true;

}

for (int i = 0; i < strLen; i++) {

if ((Character.isWhitespace(str.charAt(i)) == false)) {

return false;

}

}

return true;

}

public

static boolean isNotBlank(String str) {

return !StringUtils.isBlank(str);

}

//

Trim

//-----------------------------------------------------------------------

public

static String clean(String str) {

return str == null ? EMPTY : str.trim();

}

public

static String trim(String str) {

return str == null ? null : str.trim();

}

public

static String trimToNull(String str) {

String ts = trim(str);

return isEmpty(ts) ? null : ts;

}

public

static String trimToEmpty(String str) {

return str == null ? EMPTY : str.trim();

}

//

Stripping

//-----------------------------------------------------------------------

public

static String strip(String str) {

return strip(str, null);

}

public

static String stripToNull(String str) {

if (str == null) {

return null;

}

str = strip(str, null);

return str.length() == 0 ? null : str;

}

public

static String stripToEmpty(String str) {

return str == null ? EMPTY : strip(str, null);

}

public

static String strip(String str, String stripChars) {

if (isEmpty(str)) {

return str;

}

str = stripStart(str, stripChars);

return stripEnd(str, stripChars);

}

public

static String stripStart(String str, String stripChars) {

int strLen;

if (str == null || (strLen = str.length()) == 0) {

return str;

}

int start = 0;

if (stripChars == null) {

while ((start != strLen) &&

Character.isWhitespace(str.charAt(start))) {

start++;

}

} else if (stripChars.length() == 0) {

return str;

} else {

while ((start != strLen) &&

(stripChars.indexOf(str.charAt(start)) != -1)) {

start++;

}

}

return str.substring(start);

}

public

static String stripEnd(String str, String stripChars) {

int end;

if (str == null || (end = str.length()) == 0) {

return str;

}

if (stripChars == null) {

while ((end != 0) &&

Character.isWhitespace(str.charAt(end - 1))) {

end--;

}

} else if (stripChars.length() == 0) {

return str;

} else {

while ((end != 0) &&

(stripChars.indexOf(str.charAt(end - 1)) != -1)) {

end--;

}

}

return str.substring(0, end);

}

//

StripAll

//-----------------------------------------------------------------------

public

static String[] stripAll(String[] strs) {

return stripAll(strs, null);

}

public

static String[] stripAll(String[] strs, String stripChars) {

int strsLen;

if (strs == null || (strsLen = strs.length) == 0) {

return strs;

}

String[] newArr = new String[strsLen];

for (int i = 0; i < strsLen; i++) {

newArr[i] = strip(strs[i], stripChars);

}

return newArr;

}

//

Equals

//-----------------------------------------------------------------------

public

static boolean equals(String str1, String str2) {

return str1 == null ? str2 == null : str1.equals(str2);

}

public

static boolean equalsIgnoreCase(String str1, String str2) {

return str1 == null ? str2 == null :

str1.equalsIgnoreCase(str2);

}

//

IndexOf

//-----------------------------------------------------------------------

public

static int indexOf(String str, char searchChar) {

if (isEmpty(str)) {

return -1;

}

return str.indexOf(searchChar);

}

public

static int indexOf(String str, char searchChar, int startPos)

{

if (isEmpty(str)) {

return -1;

}

return str.indexOf(searchChar, startPos);

}

public

static int indexOf(String str, String searchStr) {

if (str == null || searchStr == null) {

return -1;

}

return str.indexOf(searchStr);

}

public

static int ordinalIndexOf(String str, String searchStr, int

ordinal) {

if (str == null || searchStr == null || ordinal <=

0) {

return INDEX_NOT_FOUND;

}

if (searchStr.length() == 0) {

return 0;

}

int found = 0;

int index = INDEX_NOT_FOUND;

do {

index = str.indexOf(searchStr, index + 1);

if (index < 0) {

return index;

}

found++;

} while (found < ordinal);

return index;

}

public

static int indexOf(String str, String searchStr, int startPos)

{

if (str == null || searchStr == null) {

return -1;

}

// JDK1.2/JDK1.3 have a bug, when startPos >

str.length for "", hence

if (searchStr.length() == 0 &&

startPos >= str.length()) {

return str.length();

}

return str.indexOf(searchStr, startPos);

}

//

LastIndexOf

//-----------------------------------------------------------------------

public

static int lastIndexOf(String str, char searchChar) {

if (isEmpty(str)) {

return -1;

}

return str.lastIndexOf(searchChar);

}

public

static int lastIndexOf(String str, char searchChar, int startPos)

{

if (isEmpty(str)) {

return -1;

}

return str.lastIndexOf(searchChar, startPos);

}

public

static int lastIndexOf(String str, String searchStr) {

if (str == null || searchStr == null) {

return -1;

}

return str.lastIndexOf(searchStr);

}

public

static int lastIndexOf(String str, String searchStr, int startPos)

{

if (str == null || searchStr == null) {

return -1;

}

return str.lastIndexOf(searchStr, startPos);

}

//

Contains

//-----------------------------------------------------------------------

public

static boolean contains(String str, char searchChar) {

if (isEmpty(str)) {

return false;

}

return str.indexOf(searchChar) >= 0;

}

public

static boolean contains(String str, String searchStr) {

if (str == null || searchStr == null) {

return false;

}

return str.indexOf(searchStr) >= 0;

}

public

static boolean containsIgnoreCase(String str, String searchStr)

{

if (str == null || searchStr == null) {

return false;

}

return contains(str.toUpperCase(), searchStr.toUpperCase());

}

//

IndexOfAny chars

//-----------------------------------------------------------------------

public

static int indexOfAny(String str, char[] searchChars) {

if (isEmpty(str) || ArrayUtils.isEmpty(searchChars)) {

return -1;

}

for (int i = 0; i < str.length(); i++) {

char ch = str.charAt(i);

for (int j = 0; j < searchChars.length; j++) {

if (searchChars[j] == ch) {

return i;

}

}

}

return -1;

}

public

static int indexOfAny(String str, String searchChars) {

if (isEmpty(str) || isEmpty(searchChars)) {

return -1;

}

return indexOfAny(str, searchChars.toCharArray());

}

//

ContainsAny

//-----------------------------------------------------------------------

public

static boolean containsAny(String str, char[] searchChars) {

if (str == null || str.length() == 0 || searchChars == null ||

searchChars.length == 0) {

return false;

}

for (int i = 0; i < str.length(); i++) {

char ch = str.charAt(i);

for (int j = 0; j < searchChars.length; j++) {

if (searchChars[j] == ch) {

return true;

}

}

}

return false;

}

public

static boolean containsAny(String str, String searchChars) {

if (searchChars == null) {

return false;

}

return containsAny(str, searchChars.toCharArray());

}

//

IndexOfAnyBut chars

//-----------------------------------------------------------------------

public

static int indexOfAnyBut(String str, char[] searchChars) {

if (isEmpty(str) || ArrayUtils.isEmpty(searchChars)) {

return -1;

}

outer : for (int i = 0; i < str.length(); i++)

{

char ch = str.charAt(i);

for (int j = 0; j < searchChars.length; j++) {

if (searchChars[j] == ch) {

continue outer;

}

}

return i;

}

return -1;

}

public

static int indexOfAnyBut(String str, String searchChars) {

if (isEmpty(str) || isEmpty(searchChars)) {

return -1;

}

for (int i = 0; i < str.length(); i++) {

if (searchChars.indexOf(str.charAt(i)) < 0) {

return i;

}

}

return -1;

}

//

ContainsOnly

//-----------------------------------------------------------------------

public

static boolean containsOnly(String str, char[] valid) {

// All these pre-checks are to maintain API with an older

version

if ((valid == null) || (str == null)) {

return false;

}

if (str.length() == 0) {

return true;

}

if (valid.length == 0) {

return false;

}

return indexOfAnyBut(str, valid) == -1;

}

public

static boolean containsOnly(String str, String validChars) {

if (str == null || validChars == null) {

return false;

}

return containsOnly(str, validChars.toCharArray());

}

//

ContainsNone

//-----------------------------------------------------------------------

public

static boolean containsNone(String str, char[] invalidChars)

{

if (str == null || invalidChars == null) {

return true;

}

int strSize = str.length();

int validSize = invalidChars.length;

for (int i = 0; i < strSize; i++) {

char ch = str.charAt(i);

for (int j = 0; j < validSize; j++) {

if (invalidChars[j] == ch) {

return false;

}

}

}

return true;

}

public

static boolean containsNone(String str, String invalidChars)

{

if (str == null || invalidChars == null) {

return true;

}

return containsNone(str, invalidChars.toCharArray());

}

//

IndexOfAny strings

//-----------------------------------------------------------------------

public

static int indexOfAny(String str, String[] searchStrs) {

if ((str == null) || (searchStrs == null)) {

return -1;

}

int sz = searchStrs.length;

// String's can't have a MAX_VALUEth index.

int ret = Integer.MAX_VALUE;

int tmp = 0;

for (int i = 0; i < sz; i++) {

String search = searchStrs[i];

if (search == null) {

continue;

}

tmp = str.indexOf(search);

if (tmp == -1) {

continue;

}

if (tmp < ret) {

ret = tmp;

}

}

return (ret == Integer.MAX_VALUE) ? -1 : ret;

}

public

static int lastIndexOfAny(String str, String[] searchStrs) {

if ((str == null) || (searchStrs == null)) {

return -1;

}

int sz = searchStrs.length;

int ret = -1;

int tmp = 0;

for (int i = 0; i < sz; i++) {

String search = searchStrs[i];

if (search == null) {

continue;

}

tmp = str.lastIndexOf(search);

if (tmp > ret) {

ret = tmp;

}

}

return ret;

}

//

Substring

//-----------------------------------------------------------------------

public

static String substring(String str, int start) {

if (str == null) {

return null;

}

// handle negatives, which means last n characters

if (start < 0) {

start = str.length() + start; // remember start is negative

}

if (start < 0) {

start = 0;

}

if (start > str.length()) {

return EMPTY;

}

return str.substring(start);

}

public

static String substring(String str, int start, int end) {

if (str == null) {

return null;

}

// handle negatives

if (end < 0) {

end = str.length() + end; // remember end is negative

}

if (start < 0) {

start = str.length() + start; // remember start is negative

}

// check length next

if (end > str.length()) {

end = str.length();

}

// if start is greater than end, return ""

if (start > end) {

return EMPTY;

}

if (start < 0) {

start = 0;

}

if (end < 0) {

end = 0;

}

return str.substring(start, end);

}

//

Left/Right/Mid

//-----------------------------------------------------------------------

public

static String left(String str, int len) {

if (str == null) {

return null;

}

if (len < 0) {

return EMPTY;

}

if (str.length() <= len) {

return str;

}

return str.substring(0, len);

}

public

static String right(String str, int len) {

if (str == null) {

return null;

}

if (len < 0) {

return EMPTY;

}

if (str.length() <= len) {

return str;

}

return str.substring(str.length() - len);

}

public

static String mid(String str, int pos, int len) {

if (str == null) {

return null;

}

if (len < 0 || pos > str.length())

{

return EMPTY;

}

if (pos < 0) {

pos = 0;

}

if (str.length() <= (pos + len)) {

return str.substring(pos);

}

return str.substring(pos, pos + len);

}

//

SubStringAfter/SubStringBefore

//-----------------------------------------------------------------------

public

static String substringBefore(String str, String separator) {

if (isEmpty(str) || separator == null) {

return str;

}

if (separator.length() == 0) {

return EMPTY;

}

int pos = str.indexOf(separator);

if (pos == -1) {

return str;

}

return str.substring(0, pos);

}

public

static String substringAfter(String str, String separator) {

if (isEmpty(str)) {

return str;

}

if (separator == null) {

return EMPTY;

}

int pos = str.indexOf(separator);

if (pos == -1) {

return EMPTY;

}

return str.substring(pos + separator.length());

}

public

static String substringBeforeLast(String str, String separator)

{

if (isEmpty(str) || isEmpty(separator)) {

return str;

}

int pos = str.lastIndexOf(separator);

if (pos == -1) {

return str;

}

return str.substring(0, pos);

}

public

static String substringAfterLast(String str, String separator)

{

if (isEmpty(str)) {

return str;

}

if (isEmpty(separator)) {

return EMPTY;

}

int pos = str.lastIndexOf(separator);

if (pos == -1 || pos == (str.length() - separator.length()))

{

return EMPTY;

}

return str.substring(pos + separator.length());

}

//

Substring between

//-----------------------------------------------------------------------

public

static String substringBetween(String str, String tag) {

return substringBetween(str, tag, tag);

}

public

static String substringBetween(String str, String open, String

close) {

if (str == null || open == null || close == null) {

return null;

}

int start = str.indexOf(open);

if (start != -1) {

int end = str.indexOf(close, start + open.length());

if (end != -1) {

return str.substring(start + open.length(), end);

}

}

return null;

}

public

static String[] substringsBetween(String str, String open, String

close) {

if (str == null || isEmpty(open) || isEmpty(close)) {

return null;

}

int strLen = str.length();

if (strLen == 0) {

return ArrayUtils.EMPTY_STRING_ARRAY;

}

int closeLen = close.length();

int openLen = open.length();

List list = new ArrayList();

int pos = 0;

while (pos < (strLen - closeLen)) {

int start = str.indexOf(open, pos);

if (start < 0) {

break;

}

start += openLen;

int end = str.indexOf(close, start);

if (end < 0) {

break;

}

list.add(str.substring(start, end));

pos = end + closeLen;

}

if (list.isEmpty()) {

数据治理是确保数据准确性、可靠性、安全性、可用性和完整性的体系和框架。它定义了组织内部如何使用、存储、保护和共享数据的规则和流程。数据治理的重要性随着数字化转型的加速而日益凸显,它能够提高决策效率、增强业务竞争力、降低风险,并促进业务创新。有效的数据治理体系可以确保数据在采集、存储、处理、共享和保护等环节的合规性和有效性。 数据质量管理是数据治理中的关键环节,它涉及数据质量评估、数据清洗、标准化和监控。高质量的数据能够提升业务决策的准确性,优化业务流程,并挖掘潜在的商业价值。随着大数据和人工智能技术的发展,数据质量管理在确保数据准确性和可靠性方面的作用愈发重要。企业需要建立完善的数据质量管理和校验机制,并通过数据清洗和标准化提高数据质量。 数据安全与隐私保护是数据治理中的另一个重要领域。随着数据量的快速增长和互联网技术的迅速发展,数据安全与隐私保护面临前所未有的挑战。企业需要加强数据安全与隐私保护的法律法规和技术手段,采用数据加密、脱敏和备份恢复等技术手段,以及加强培训和教育,提高安全意识和技能水平。 数据流程管理与监控是确保数据质量、提高数据利用率、保护数据安全的重要环节。有效的数据流程管理可以确保数据流程的合规性和高效性,而实时监控则有助于及时发现并解决潜在问题。企业需要设计合理的数据流程架构,制定详细的数据管理流程规范,并运用数据审计和可视化技术手段进行监控。 数据资产管理是将数据视为组织的重要资产,通过有效的管理和利用,为组织带来经济价值。数据资产管理涵盖数据的整个生命周期,包括数据的创建、存储、处理、共享、使用和保护。它面临的挑战包括数据量的快速增长、数据类型的多样化和数据更新的迅速性。组织需要建立完善的数据管理体系,提高数据处理和分析能力,以应对这些挑战。同时,数据资产的分类与评估、共享与使用规范也是数据资产管理的重要组成部分,需要制定合理的标准和规范,确保数据共享的安全性和隐私保护,以及建立合理的利益分配和权益保障机制。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值