处理一个字符串多个分隔符

2024-06-04 12:58

本文主要是介绍处理一个字符串多个分隔符,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在之前的项目需求中,遇到一个字符串一种字符标识为1种类型。

         如字符串: a#aa|b#bb$c#aaa。。。这种

其中

#号一组的有:[a,aa,bb,aaa]

分组为$有:[c]

分组|的有:[b]

.......

里面规则是:第一个符号前面没有标识符则列入后面的分组,后面字符串没有标识符则列入前面标识分组,其余中间部分按前面标识符分组

如(前无):a 前面没有标识符,则取后面#号

如2(后无):aaa后面没有标识符,则取前面

如3(中间):aa前面#号,则是#号分组,b前面是|,这是|号分组

以此类推。。。。


代码如下:



/**** @param src 操作的符号* @param symbol 操作的符号* */public static Map<String, List<String>> byteOpare(char[] src, char[] symbol) {Map<String, List<String>> result = new HashMap<String, List<String>>();int size = src.length;String prefix = null, suffix = null;String buf = "";for (int i = 0; i < size; i++) {// 第一个字符和最后的字符特殊处理char b = src[i];if (i == 0) {if (compareSymbol(b, symbol)) { // 特殊字符prefix = b + "";} else { // 普通字符prefix = null;buf += b;}} else if (i == size - 1) { // 最后一个特殊处理if (!compareSymbol(b, symbol)) { // 特殊字符buf += b;}put(result, prefix, buf);} else { // 中间数据if (compareSymbol(b, symbol)) { // 特殊字符suffix = b + "";if (prefix == null) { // 没有前缀// 数字按后缀处理// 并且按后缀保存put(result, suffix, buf);} else {// 有前缀按前缀的来处理put(result, prefix, buf);}prefix = suffix; // 处理完后将后缀变成前缀suffix = null;buf = "";} else {buf += b;}}}return result;}/*** 添加至Map* @param result* @param key* @param value*/public static void put(Map<String, List<String>> result, String key, String value) {if(StringUtil.isNullOrEmpty(key)) {key = "empty";}if (result.containsKey(key)) {((List<String>) result.get(key)).add(value);} else {List<String> values = new ArrayList<String>();values.add(value);result.put(key, values);}}/*** 是否包含特殊字符* */public static boolean compareSymbol(char target, char[] symbol) {for (char s : symbol) {if (s == target) {return true;}}return false;}


则以下为测试方法:

String str = "a#aa|b#bb$c#aaa";Map<String, List<String>> result = new Demo().byteOpare(str.toCharArray(), new char[] { '#', '$', '|', 'N' });for (Entry<String, List<String>> entry : result.entrySet()) {String key = entry.getKey();System.out.print("分组为" + key + "[");for (String value : entry.getValue()) {System.out.print(value + ",");}System.out.println("]");}


打印结果为:

分组为#[a,aa,bb,aaa,]
分组为$[c,]
分组为|[b,]


值得注意的是,如果没有任意标识符的话,Map中的Key为:empty



希望有用上的码友。Mark下

害羞害羞害羞害羞害羞害羞害羞害羞害羞害羞害羞害羞害羞害羞害羞害羞害羞害羞害羞害羞害羞害羞害羞害羞害羞害羞害羞害羞害羞害羞害羞害羞害羞害羞害羞害羞害羞害羞害羞害羞害羞害羞害羞害羞害羞害羞害羞害羞害羞害羞害羞


这篇关于处理一个字符串多个分隔符的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1030152

相关文章

SQL Server数据库死锁处理超详细攻略

《SQLServer数据库死锁处理超详细攻略》SQLServer作为主流数据库管理系统,在高并发场景下可能面临死锁问题,影响系统性能和稳定性,这篇文章主要给大家介绍了关于SQLServer数据库死... 目录一、引言二、查询 Sqlserver 中造成死锁的 SPID三、用内置函数查询执行信息1. sp_w

Java对异常的认识与异常的处理小结

《Java对异常的认识与异常的处理小结》Java程序在运行时可能出现的错误或非正常情况称为异常,下面给大家介绍Java对异常的认识与异常的处理,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参... 目录一、认识异常与异常类型。二、异常的处理三、总结 一、认识异常与异常类型。(1)简单定义-什么是

使用jenv工具管理多个JDK版本的方法步骤

《使用jenv工具管理多个JDK版本的方法步骤》jenv是一个开源的Java环境管理工具,旨在帮助开发者在同一台机器上轻松管理和切换多个Java版本,:本文主要介绍使用jenv工具管理多个JD... 目录一、jenv到底是干啥的?二、jenv的核心功能(一)管理多个Java版本(二)支持插件扩展(三)环境隔

Springboot3+将ID转为JSON字符串的详细配置方案

《Springboot3+将ID转为JSON字符串的详细配置方案》:本文主要介绍纯后端实现Long/BigIntegerID转为JSON字符串的详细配置方案,s基于SpringBoot3+和Spr... 目录1. 添加依赖2. 全局 Jackson 配置3. 精准控制(可选)4. OpenAPI (Spri

Golang 日志处理和正则处理的操作方法

《Golang日志处理和正则处理的操作方法》:本文主要介绍Golang日志处理和正则处理的操作方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考... 目录1、logx日志处理1.1、logx简介1.2、日志初始化与配置1.3、常用方法1.4、配合defer

springboot加载不到nacos配置中心的配置问题处理

《springboot加载不到nacos配置中心的配置问题处理》:本文主要介绍springboot加载不到nacos配置中心的配置问题处理,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑... 目录springboot加载不到nacos配置中心的配置两种可能Spring Boot 版本Nacos

使用Python实现base64字符串与图片互转的详细步骤

《使用Python实现base64字符串与图片互转的详细步骤》要将一个Base64编码的字符串转换为图片文件并保存下来,可以使用Python的base64模块来实现,这一过程包括解码Base64字符串... 目录1. 图片编码为 Base64 字符串2. Base64 字符串解码为图片文件3. 示例使用注意

Python函数返回多个值的多种方法小结

《Python函数返回多个值的多种方法小结》在Python中,函数通常用于封装一段代码,使其可以重复调用,有时,我们希望一个函数能够返回多个值,Python提供了几种不同的方法来实现这一点,需要的朋友... 目录一、使用元组(Tuple):二、使用列表(list)三、使用字典(Dictionary)四、 使

python web 开发之Flask中间件与请求处理钩子的最佳实践

《pythonweb开发之Flask中间件与请求处理钩子的最佳实践》Flask作为轻量级Web框架,提供了灵活的请求处理机制,中间件和请求钩子允许开发者在请求处理的不同阶段插入自定义逻辑,实现诸如... 目录Flask中间件与请求处理钩子完全指南1. 引言2. 请求处理生命周期概述3. 请求钩子详解3.1

Python处理大量Excel文件的十个技巧分享

《Python处理大量Excel文件的十个技巧分享》每天被大量Excel文件折磨的你看过来!这是一份Python程序员整理的实用技巧,不说废话,直接上干货,文章通过代码示例讲解的非常详细,需要的朋友可... 目录一、批量读取多个Excel文件二、选择性读取工作表和列三、自动调整格式和样式四、智能数据清洗五、