`

Java中字符串操作的工具类

    博客分类:
  • java
 
阅读更多

        Java编程开发中常涉及到字符串的操作。这里提供了关于String一些操作的包装实现。

        1. 获取指定的前缀和后缀之间的内容,返回一个内容列表

       

	/**
	 * 获取指定前缀和后缀之间的内容,并返回一个内容列表
	 * @param str 操作的目标字符串
	 * @param c1 前缀字符
	 * @param c2 后缀字符
	 * @return 挖出的子串列表
	 */
	public static List<String> dugSubstrings(String str, char c1, char c2) {
		List<String> result = new ArrayList<String>();
		int index1 = -1;
		int index2 = -1;
		while ((index1 = str.indexOf(c1, index2 + 1)) != -1
				&& (index2 = str.indexOf(c2, index1 + 1)) != -1) {
			result.add(str.substring(index1 + 1, index2));
		}
		return result;
	}

	/**
	 * 获取指定前缀和后缀之间的内容,并返回一个内容列表
	 * @param str 操作的目标字符串
	 * @param s1 前缀子串
	 * @param s2 后缀子串
	 * @return 挖出的子串列表
	 */
	public static List<String> dugSubstrings(String str, String s1, String s2) {
		List<String> result = new ArrayList<String>();
		int index1 = -1;
		int index2 = -1;
		while ((index1 = str.indexOf(s1, index2 + 1)) != -1
				&& (index2 = str.indexOf(s2, index1 + 1)) != -1) {
			result.add(str.substring(index1 + s1.length(), index2));
		}
		return result;
	}

         单元测试

       

	@Test
	public void testDugSubstringsWithChar() {
		String str = "arr[0][1][2]";
		System.out.println(StringUtil.dugSubstrings(str, '[', ']'));
		// 输出 [0, 1, 2]
	}

	@Test
	public void testDugSubstringsWithString() {
		String str = "map1['key1']=value1&map2['key2']=value2";
		System.out.println(StringUtil.dugSubstrings(str, "['", "']"));
		// 输出 [key1, key2]
	}

        

        2. 字符串的分隔,支持是否对特定范围内的分隔符进行忽略

    

	/**
	 * 用指定符号将字符串分隔,同时支持忽略指定前缀和后缀之间的分隔符号
	 * @param str 操作的目标字符串
	 * @param gap 分隔符
	 * @param exclude1 前缀
	 * @param exclude2 后缀
	 * @return 切分后的子串数组
	 */
	public static String[] splitStringByGap(String str, char gap,
			String exclude1, String exclude2) {
		List<String> strs = new ArrayList<String>();
		int j = -1;
		int i = j;
		j = str.indexOf(gap, i + 1);
		while (j != -1) {
			int t = 0;
			if (str.indexOf(exclude1) < j && (t = str.indexOf(exclude2, j)) > j) {
				j = str.indexOf(gap, t);
			}
			if (j != -1) {
				strs.add(str.substring(i + 1, j));
				i = j;
				j = str.indexOf(gap, i + 1);
			}
		}
		if (i != -1) {
			strs.add(str.substring(i + 1));
		}
		return strs.toArray(new String[1]);
	}

         单元测试

   

	@Test
	public void testSplitStringByGap() {
		String str = "aa.[[bb.cc]].dd";
		List<String> list = Arrays.asList(StringUtil.splitStringByGap(str, '.', "[[", "]]"));
		assertEquals(3, list.size());
		System.out.println(list);
	}

        

        3. 字符串去除所有空白和换行

   

	/**
	 * 将字符串中的转义符去掉
	 * @param str 操作的目标字符串
	 * @return 瘦身后的字符串
	 */
	public static String replaceBlank(String str) {
		String dest = "";
		if (str != null) {
			Pattern p = Pattern.compile("\\s*|\t|\r|\n");
			Matcher m = p.matcher(str);
			dest = m.replaceAll("");
		}
		return dest;
	}

         单元测试

   

	@Test
	public void testReplaceBlank() {
		String str = "asdsa\n\tasdsa     \nsadsa\tsadsa\nsadsa";
		System.out.println(str);
		System.out.println(StringUtil.replaceBlank(str));
	}

 

        4. 通过反射将字符串转成基本数据类型

            用于在事先不知道最终需要转换为什么类型的情况下,在通过反射编写工具类时可以用到。

   

	@SuppressWarnings("unchecked")
	/**
	 * 通过反射将字符串转换为基本数据类型
	 * @param str 需要转换的字符串
	 * @param clz 转换后的类型
	 * @return 转换后的值
	 * @throws Exception
	 */
	public static <T> T transferString2PrimitiveType(String str, Class<T> clz)
			throws Exception {
		T obj = null;
		try {
			if (Boolean.class == clz || boolean.class == clz) {
				obj = (T) Boolean.valueOf(str);
			} else if (Character.class == clz || char.class == clz) {
				obj = (T) (Character) str.toCharArray()[0];
			} else if (Short.class == clz || short.class == clz) {
				obj = (T) Short.valueOf(str);
			} else if (Integer.class == clz || int.class == clz) {
				obj = (T) Integer.valueOf(str);
			} else if (Byte.class == clz || byte.class == clz) {
				obj = (T) Byte.valueOf(str);
			} else if (Long.class == clz || long.class == clz) {
				obj = (T) Long.valueOf(str);
			} else if (Double.class == clz || double.class == clz) {
				obj = (T) Double.valueOf(str);
			} else if (Float.class == clz || float.class == clz) {
				obj = (T) Float.valueOf(str);
			}
		} catch (Exception e) {
			throw new Exception(str + "无法转换为" + clz.getSimpleName() + "类型");
		}
		return obj;
	}

         单元测试

   

	@Test
	public void testTransferString2PrimitiveType() throws Exception{
		String str = "true";
		System.out.println(StringUtil.transferString2PrimitiveType(str, Boolean.class));
		str = "12.3f";
		System.out.println(StringUtil.transferString2PrimitiveType(str, Float.class));
		str = "123.44";
		System.out.println(StringUtil.transferString2PrimitiveType(str, Double.class));
	}

 

分享到:
评论

相关推荐

    java 字符串工具类 java 字符串工具类

    java 字符串工具类 java 字符串工具类java 字符串工具类 java 字符串工具类java 字符串工具类 java 字符串工具类java 字符串工具类 java 字符串工具类java 字符串工具类 java 字符串工具类java 字符串工具类 java ...

    java 字符串截取工具类

    java 字符串截取工具类java 字符串截取工具类

    java 文本字符串替换工具

    这个“java 文本字符串替换工具”提供了一种灵活的方式,不仅可以在单个文件中进行字符串替换,还可以通过批处理脚本进行自动化操作,这对于日常开发和维护工作非常有用。在实际应用中,可以根据具体需求对其进行...

    Java中字符串生成图片工具类

    Java中字符串生成图片工具类 将字符串转换为BufferedImage对象 将字符串转换为BufferedImage对象字段--自动换行

    java压缩字符串

    java压缩字符串

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

    Java字符串中${}或者{}等占位符替换工具类 Java字符串中${}或者{}等占位符替换工具类是一个功能强大且实用的工具类,它可以将Java字符串中的占位符依次替换为指定的值。该工具类的主要功能是实现占位符的替换,即将...

    java sql操作工具类 java sql操作工具类

    java sql操作工具类 java sql操作工具类java sql操作工具类 java sql操作工具类java sql操作工具类 java sql操作工具类java sql操作工具类 java sql操作工具类java sql操作工具类 java sql操作工具类java sql操作...

    字符串工具类

    字符串工具类,格式字符串、随机数生成、ip区间判断!

    字符串操作工具类源码

    java 字符串 操作 源码 工具

    Java 所有字符串转UTF-8 万能工具类-GetEncode.java

    不需要关心接受的字符串编码是UTF_8还是GBK,还是ios-8859-1,自动转换为utf-8编码格式,无需判断字符串原有编码,用法://处理编码String newStr = GetEncode.transcode(oldStr);

    java字符串基本处理工具类

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

    时间,字符串常用工具类

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

    字符转换工具类

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

    java 字符串中文判断

    在Java编程语言中,处理字符串是非常常见的操作,尤其是在涉及到文本分析和处理的场景。本文将深入探讨如何在Java中进行中文字符的判断和计数,这主要基于Java的Unicode编码特性以及字符集的理解。 首先,我们需要...

    json工具类,java日期转换,字符串转换等各种工具类

    在Java编程中,工具类(Util Classes)是程序员日常工作中不可或缺的部分,它们提供了一系列静态方法,用于执行常见的任务,如JSON解析、日期处理、字符串操作等。以下是对标题和描述中涉及的知识点的详细说明: 1....

    java中操作json字符串的工具类

    - commons-beanutils-1.8.0.jar - commons-collections-3.1.jar - commons-lang-2.5.jar - commons-logging-1.2.jar - ezmorph-1.0.6.jar - json-lib-2.4-jdk15.jar

    java 字符串操作类

    在Java编程语言中,字符串操作是日常开发中的重要部分,因为字符串处理无处不在,从数据解析到用户界面的交互。`StringUtil` 类是这样一个工具类,它集合了多种常用的字符串处理方法,以提高开发效率并减少代码重复...

    JAVA 字符串 操作

    在Java编程语言中,字符串...以上只是Java字符串操作的一小部分,实际开发中还有许多其他方法和特性,如国际化(I18N)、正则表达式等,都需要程序员灵活掌握。理解并熟练运用这些操作,能有效提高代码质量和效率。

Global site tag (gtag.js) - Google Analytics