`
gaozhonghui
  • 浏览: 241424 次
  • 性别: Icon_minigender_1
  • 来自: 内蒙古自治区
社区版块
存档分类
最新评论

工具类_字符串处理

J# 
阅读更多
package com.common.util;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;


public class StringUtil {

	public boolean hasRedundant(String[] strs) {
		if (null == strs || strs.length < 2)
			return false;
		boolean isRedundant = false;
		for (int i = strs.length - 1; i > -1; i--)
			for (int j = i - 1; j > -1; j--)
				if (null != strs[i] && strs[i].equals(strs[j])) {
					isRedundant = true;
					break;
				}
		return isRedundant;
	}

	/**
	 * 判断字符串string是否存在于数组strs中。
	 * 
	 * @param string
	 * @param strs
	 * @return
	 */
	public boolean isExisted(String string, String[] strs) {
		if (null == string || null == strs || strs.length < 1)
			return false;
		boolean isOverlapped = false;
		for (int i = 0; i < strs.length; i++)
			if (null != strs[i] && strs[i].equals(string)) {
				isOverlapped = true;
				break;
			}
		return isOverlapped;
	}

	/**
	 * 将字符串strSource用regex分割成数组,并判断字符串string是否在该数组里。
	 * 
	 * @param string
	 * @param strSource
	 * @param regex
	 * @return
	 */
	public boolean isExisted(String string, String strSource, String regex) {
		if (null == string || null == strSource || null == regex
				|| strSource.length() < 1)
			return false;
		return isExisted(string, strSource.split(regex));
	}

	/**
	 * 将字符串string用分割串regex分割成数组,并且剔除重复的,再重新用分割串regex组合起来。
	 * 
	 * @param string
	 * @param regex
	 * @return
	 */
	public String makeUnique(String string, String regex) {
		if (null == string)
			return null;
		if (null == regex)
			return string;
		if ("".equals(string.trim()) || "".equals(regex))
			return string;
		String result = "";
		String[] strs = string.split(regex);
		strs = removeNull(strs);
		int len = strs.length;
		boolean isRedundant[] = new boolean[len];
		for (int i = 0; i < len; i++)
			isRedundant[i] = false;
		for (int i = 0; i < len; i++) {
			if (isRedundant[i])
				continue;
			for (int j = i + 1; j < len; j++)
				if (!isRedundant[j] && null != strs[j]
						&& strs[j].equals(strs[i]))
					isRedundant[j] = true;
			if (!isRedundant[i])
				result += strs[i] + regex;
		}
		return result;
	}

	public static String toString(String[] str, String regex) {
		String string = "";
		for (int i = 0; i < str.length; i++) {
			if (str[i] != null && str[i].trim().length() > 0)
				string += "'" + str[i] + "'" + regex;
		}
		string = string.trim();
		if (string.endsWith(regex))
			string = string.substring(0, string.length() - 1);
		return string;
	}

	/**
	 * 将str1和str2的字符串用regex分割,剔除重复的子串,然后把两者合并。
	 * 
	 * @param str1
	 * @param str2
	 * @param regex
	 * @return
	 */
	public String appendUnique(String str1, String str2, String regex) {
		if (null == str1 && null == str2)
			return null;
		if (null == str1 && null != str2)
			return makeUnique(str2, regex);
		if (null == str2 && null != str1)
			return makeUnique(str1, regex);
		if (null == regex)
			return str1 + str2;
		return makeUnique(str1 + str2, regex);
	}

	/**
	 * 从数组strs1中将包含在数组strs2中的元素给剔除出去。
	 * 
	 * @param strs1
	 * @param strs2
	 * @return
	 */
	public String[] removeStrings(String[] strs1, String[] strs2) {
		if (null == strs1 || null == strs2 || strs1.length < 1
				|| strs2.length < 1)
			return strs1;
		int len1 = strs1.length;
		int len2 = strs2.length;
		boolean willBeRemoved;
		List remainList = new ArrayList();
		for (int i = 0; i < len1; i++) {
			willBeRemoved = false;
			for (int j = 0; j < len2; j++)
				if (null != strs2[j] && strs2[j].equals(strs1[i])) {
					willBeRemoved = true;
				}
			if (!willBeRemoved)
				remainList.add((String) strs1[i]);
		}
		return (String[]) remainList.toArray(new String[0]);
	}

	/**
	 * 用regex把str1和str2分割成数组之后,再从str1分割出来的数组中剔除包含在从str2种分割出来的数组中的元素。
	 * 最后返回用regex为分隔符拼成的数组字符串。
	 * 
	 * @param str1
	 * @param str2
	 * @param regex
	 * @return
	 */
	public String removeString(String str1, String str2, String regex) {
		if (null == str1 || null == str2 || "".equals(str2) || "".equals(str1)
				|| null == regex)
			return str1;
		String strs[] = removeStrings(str1.split(regex), str2.split(regex));
		String result = "";
		for (int i = 0; i < strs.length; i++)
			if (null != strs[i])
				result += strs[i] + regex;
		return result;
	}

	/**
	 * 将数组strs中为null或者为""的元素剔除
	 * 
	 * @param strs
	 * @return
	 */
	public String[] removeNull(String[] strs) {
		if (null == strs || strs.length < 1)
			return strs;
		List strList = new ArrayList();
		for (int i = 0; i < strs.length; i++) {
			if (null != strs[i] && !"".equals(strs[i].trim())) {
				strList.add((String) strs[i].trim());
			}
		}
		return (String[]) strList.toArray(new String[0]);
	}

	/**
	 * 改变str中strKeyList中的多个字符颜色为red
	 */
	public static String getSetRedString(String str, List strKeyList) {
		if (str == null)
			return null;
		if (strKeyList == null || strKeyList.size() < 0)
			return str;
		String flag = "";
		for (int i = 0; i < strKeyList.size(); i++) {
			flag = (String) strKeyList.get(i);
			if (flag != null && !flag.equals("")) {
				if (str.indexOf(flag) >= 0) {
					str = str.replaceAll(flag, "<font color='red'>" + flag
							+ "</font>");
				}
			}
		}
		return str;
	}

	/**
	 * 
	 * @方法描述:截取一个字符串指定长度的前几个字符
	 * @参数描述:
	 * @param src
	 *            要截取的字符串
	 * @param len
	 *            要截取的长度
	 * @return
	 */
	public static String getStr(String src, int length) {
		if (src == null)
			return null;
		int len = length - 3;
		if (src.getBytes().length <= len)
			return src;
		byte[] s = src.getBytes();
		int flag = 0;
		for (int i = 0; i < len; ++i) {
			if (s[i] < 0)
				flag++;
		}
		if (flag % 2 != 0)
			len--;
		byte[] d = new byte[len];
		System.arraycopy(s, 0, d, 0, len);
		String ss = new String(d) + "...";
		return ss;
	}

	/**
	 * 
	 * @方法描述:截取一个字符串指定长度的前几个字符
	 * @参数描述:
	 * @param src
	 *            要截取的字符串
	 * @param len
	 *            要截取的长度
	 * @return
	 */
	public static String getStrNo(String src, int length) {
		if (src == null)
			return null;
		int len = length - 3;
		if (src.getBytes().length <= len)
			return src;
		byte[] s = src.getBytes();
		int flag = 0;
		for (int i = 0; i < len; ++i) {
			if (s[i] < 0)
				flag++;
		}
		if (flag % 2 != 0)
			len--;
		byte[] d = new byte[len];
		System.arraycopy(s, 0, d, 0, len);
		String ss = new String(d);
		return ss;
	}

	/**
	 * 
	 * @方法描述:将传入的null值该为空串
	 * @参数描述:
	 * @param src
	 *            要判断的对象
	 * @return
	 */
	public static String nullToString(Object obj) {
		if (obj == null || "null".equals(obj.toString())) {
			obj = "";
		}
		return String.valueOf(obj).trim();
	}

	/**
	 * 对关键字检索,字符截取的处理
	 * 
	 * @param searchkey
	 *            搜索的关键字
	 * @param targetStr
	 *            目标字符串
	 * @param num
	 *            截取的宽度
	 * @return
	 */
	public static String subStringSearchKey(String[] searchkey,
			String targetStr, int num) {
		String str = "";
		if (searchkey.length != 0 && !searchkey[0].equals("")
				&& nullToString(targetStr).length() != 0) {
			for (int i = 0; i <= searchkey.length - 1; i++) {
				int addressIndex = targetStr.indexOf(searchkey[i]);

				if (addressIndex != -1) {
					if (addressIndex >= num) {
						str += targetStr.substring(addressIndex - num,
								addressIndex + searchkey[i].length());
					} else {
						str += targetStr.substring(0, addressIndex
								+ searchkey[i].length());
					}

					if (targetStr.length() - addressIndex
							- searchkey[i].length() <= num) {
						str += targetStr.substring(addressIndex
								+ searchkey[i].length());
					} else {
						str += targetStr.substring(addressIndex
								+ searchkey[i].length(), addressIndex
								+ searchkey[i].length() + num);
					}
				} else {
					str = targetStr;
				}
			}

		} else {
			str = targetStr;
		}
		return str;
	}

	/**
	 * 把文本处理成html
	 * @param s
	 * @return
	 */
	public static String htmLEncode(String s) {
		char[] htmlChars = s.toCharArray();
		StringBuffer encodedHtml = new StringBuffer();
		for (int i = 0; i < htmlChars.length; i++) {
			switch (htmlChars[i]) {
			case '<':
				encodedHtml.append("&lt;");
				break;
			case '>':
				encodedHtml.append("&gt;");
				break;
			case '&':
				encodedHtml.append("&amp;");
				break;
			case '\'':
				encodedHtml.append("&#39;");
				break;
			case '"':
				encodedHtml.append("&quot;");
				break;
			case '\\':
				encodedHtml.append("&#92;");
				break;
			case (char) 133:
				encodedHtml.append("&#133;");
				break;
			default:
				encodedHtml.append(htmlChars[i]);
				break;
			}
		}
		return encodedHtml.toString();
	}
	
	/**
	 * 去掉字符串首尾的空格和';'
	 * @param string
	 * @return
	 */
	public static String getTrimStr(String string)
	{
		if(string==null || string.isEmpty())return "";
		string = string.trim();
		if(string.endsWith(";")){string = string.substring(0,string.length()-1);} 
		if(string.startsWith(";")){string = string.substring(1,string.length());}
		return string;
	}

	
	public static void main(String args[]) {
/*		String b = getStr("是个wer蛋,是不是啊", 10);
		String str = "'hdhhd'";

		String sta = "asfdasfd是个wer蛋,是不是啊";
		String[] d = new String[] { "wer", "," };

		String ab = subStringSearchKey(d, sta, 5);
		System.out.println(ab);*/
		String t1 = "2008-05-09";
		String t2 = "2009-5-13";

		try {
		System.out.println(StringUtil.getBetweenDays(t1, t2));
		} catch (ParseException e) {
		e.printStackTrace();
		} 
	}
}

 

分享到:
评论

相关推荐

    zifuchuan.rar_vc 字符串 处理_zifuchuan_字符串_字符串处理

    4. **VC++的集成开发环境**:VC++不仅提供了编写和编译代码的工具,还有调试器、资源编辑器等,使得开发者可以方便地进行字符串处理程序的开发和测试。 5. **字符串常量和变量**:在C++中,字符串常量是不可变的,...

    zifuchuan.rar_字符串处理

    在IT领域,字符串处理是一项基础且重要的技能,广泛应用于编程语言如C,C++,Java,Python等。本文将深入探讨“zifuchuan.rar_字符串处理”这一主题,涵盖字符串的基本概念、常见操作以及字符串之间的转换方法。 ...

    MyString_string_字符串处理_

    `MyString_string_字符串处理_`这个标题暗示我们将探讨`std::string`类的各种操作,包括但不限于运算符重载、字符串拼接以及倒序输出。 首先,**运算符重载**是C++中的一个重要特性,允许我们为自定义类型(如`std:...

    在指定的位置删除一个字符串_delphi_初学者_字符串_

    在Delphi编程环境中,字符串处理是一项基础且重要的任务。初学者常常会遇到如何在特定位置删除字符串中的某个部分。在Delphi7中,这可以通过多种方法实现,包括使用内置的字符串函数、正则表达式或者自定义的逻辑。...

    regexp_source.zip_regexp source co_regexp_source_字符串_字符串匹配_通配符

    - `Rep.cpp` 和 `REP2.CPP`:可能包含与字符串处理相关的函数,如查找、替换和使用正则表达式的其他操作。 - `Stdafx.cpp`:预编译头文件,通常包含项目所需的预定义宏和通用包含文件。 - `Regexp.dsp` 和 `All ...

    java字符串中${}或者{}等的占位符替换工具类

    3. 字符串的处理:工具类需要能够正确地处理字符串中的占位符和普通字符。 在工具类的实现中,使用了StringBuilder和StringBuffer等技术来提高处理性能。同时,工具类还提供了对占位符的逃逸机制,以便在需要时逃逸...

    VC_CIVStringSet.rar_VC_CIVStringS_mfc stl_字符串类

    在编程领域,尤其是在C++环境中,字符串处理是至关重要的任务之一。MFC(Microsoft Foundation ...通过学习和使用这个自定义字符串类,开发者可以更好地优化其代码的性能,特别是在字符串处理密集型的应用程序中。

    java字符串基本处理工具类

    java字符串处理的util工具类,也可以同时添加一些其他字符处理的方法,对于项目中特殊字符处理,完成项目中基本的字串符处理。

    c++字符串简单加密.zip_C 字符串 加密_C 简单加密_C++_DEMO_字符串加密

    本篇文章将基于提供的“c++字符串简单加密.zip”文件中的内容,深入探讨C++中的字符串处理和基本加密方法。 首先,我们要理解C++中的字符串。在C++标准库中,`std::string`类是用于表示和操作字符串的主要工具。它...

    实例76_字符串相关_自动填充.rar_实例字符串

    在IT行业中,字符串是编程语言中最基础且重要的数据类型之一,用于存储和处理文本信息。在本实例"实例76_字符串相关_自动填充"中,我们将深入探讨字符串的自动填充技术,它在多种场景下都非常实用,比如格式化输出、...

    CIVStringSet_Source.zip_字符串_快速搜索

    在这个项目中,开发者可能结合了MFC的类库与STL的模板类,如`std::string`,来构建一个更高效、更灵活的字符串处理机制。 快速搜索通常涉及到字符串匹配算法,如KMP算法、Boyer-Moore算法或Rabin-Karp算法。这些...

    string_字符串_

    总的来说,这个自定义的`XString`类和`XStringUtil`工具类提供了更丰富的字符串处理功能,旨在简化开发者的代码,提高程序的可读性和效率。通过深入理解和使用这些工具,可以更好地处理字符串相关的任务,使得代码...

    自己整理的StringUtil ,字符串处理工具类.txt

    自己整理的StringUtil ,字符串处理工具类,很全面的方法,对象之间的数据转换

    纯C++ 字符串处理函数大全源码

    在这个案例中,`StringProcess.h`可能包含了`StringProcess`类的定义,其中声明了各种字符串处理函数,而`StringProcess.cpp`则实现了这些函数的具体逻辑。 描述中提到的一个关键函数是`Split`,这是一个用于字符串...

    boost之lexical_cast之字符串转换成数值.rar_Boost_boost_字符串转换成数值

    `lexical_cast`在处理字符串转换时,内部会调用C++标准库的`std::stringstream`,将字符串解析或格式化为所需的目标类型。 首先,让我们了解如何使用`lexical_cast`将字符串转换为数值。假设我们有一个字符串`std::...

    字符转换工具类

    在IT行业中,字符转换工具类是编程中常见的一种实用工具,尤其在处理字符串与各种编码格式之间转换时显得尤为重要。这个“字符转换工具类”似乎是一个专门为生成HTML源码而设计的工具,它包含了全面的源码实现,并且...

    导出工具类和字符串简易处理工具类和API文档

    在IT开发过程中,工具类和字符串处理工具是程序员日常工作中不可或缺的部分。本资源提供了一个名为"StringUtil"的自定义工具类,以及一个用于Excel导出的功能。这些工具可以帮助开发者简化代码,提高效率,同时附带...

    被爱可以字符串处理工具注册机

    在IT行业中,字符串处理工具是程序员和数据分析师日常工作中不可或缺的一部分。这些工具帮助用户进行文本操作,例如查找、替换、格式化、加密和解密等。"被爱可以字符串处理工具"显然是一款专为此目的设计的软件,它...

    时间,字符串常用工具类

    字符串处理是编程中非常常见的任务,因此,一个字符串工具类会包含许多对字符串进行操作的方法。这可能包括字符串的格式化、分割、连接、查找和替换、去除空白字符、大小写转换、检查是否符合特定模式(如邮箱格式...

Global site tag (gtag.js) - Google Analytics