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中字符串生成图片工具类 将字符串转换为BufferedImage对象 将字符串转换为BufferedImage对象字段--自动换行
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操作...
字符串工具类,格式字符串、随机数生成、ip区间判断!
java 字符串 操作 源码 工具
不需要关心接受的字符串编码是UTF_8还是GBK,还是ios-8859-1,自动转换为utf-8编码格式,无需判断字符串原有编码,用法://处理编码String newStr = GetEncode.transcode(oldStr);
java字符串处理的util工具类,也可以同时添加一些其他字符处理的方法,对于项目中特殊字符处理,完成项目中基本的字串符处理。
字符串处理是编程中非常常见的任务,因此,一个字符串工具类会包含许多对字符串进行操作的方法。这可能包括字符串的格式化、分割、连接、查找和替换、去除空白字符、大小写转换、检查是否符合特定模式(如邮箱格式...
在IT行业中,字符转换工具类是编程中常见的一种实用工具,尤其在处理字符串与各种编码格式之间转换时显得尤为重要。这个“字符转换工具类”似乎是一个专门为生成HTML源码而设计的工具,它包含了全面的源码实现,并且...
在Java编程语言中,处理字符串是非常常见的操作,尤其是在涉及到文本分析和处理的场景。本文将深入探讨如何在Java中进行中文字符的判断和计数,这主要基于Java的Unicode编码特性以及字符集的理解。 首先,我们需要...
在Java编程中,工具类(Util Classes)是程序员日常工作中不可或缺的部分,它们提供了一系列静态方法,用于执行常见的任务,如JSON解析、日期处理、字符串操作等。以下是对标题和描述中涉及的知识点的详细说明: 1....
- 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编程语言中,字符串操作是日常开发中的重要部分,因为字符串处理无处不在,从数据解析到用户界面的交互。`StringUtil` 类是这样一个工具类,它集合了多种常用的字符串处理方法,以提高开发效率并减少代码重复...
在Java编程语言中,字符串...以上只是Java字符串操作的一小部分,实际开发中还有许多其他方法和特性,如国际化(I18N)、正则表达式等,都需要程序员灵活掌握。理解并熟练运用这些操作,能有效提高代码质量和效率。