递归之初体验

本文介绍了一种处理包含转义字符的字符串的方法,通过解析和重构字符串,实现按逗号分隔的同时忽略被转义的逗号。文章提供了一个具体的算法实现,并探讨了递归方法的应用。

刚刚遇到一个需求,需要转义字符,比较有意思:
接收一段字符串

eg1:“中文,Chaina\,\,\,\,,哈哈”
eg2:“aa,aa\\,bb,cc\\\\,dd,6,hh

根据“,”分隔字符串,但是含有转义字符“\”的,不用分隔,去掉转义字符“\”

String[] array =new String[“中文”,”Chaina,,,, “,”哈哈” ];(像这样)

个人思路:(PS:欢迎指导新的思路)
首先通过String.split(”,”)截取成数组。
然后数组转成Arraylist(PS:数组不能直接删)
然后判断如果list.(position)中存在”\”时,将其替换成”,”
然后将position和position+1合成新的position,
然后将position+1这个remove()掉。

于是想到了递归,发现for()循环太麻烦了

private  List<String>  Change(List<String> alist){

        for(int i = 0 ; i < alist.size() ; i++){

            if(alist.get(i).contains("\\")){
                String tt  =  alist.get(i).replace("\\",",");
                alist.set(i,tt+alist.get(i+1));
                alist.remove(i+1);
                return Change(alist);
            }
        }
        return alist;
    }

ps:上面代码还是有的小问题,eg2就出了问题,所以一个一个解析来吧)
不解释,来波新的:

//如果第一个字符是","去掉","(递归)
private String isC(String string) {     //判断第一个字符是否为 ,
        String six = string;
        for (int i = 0; i < six.length(); i++) {
            if (six.charAt(0) == 44) {
                six = six.substring(1, six.length());
                return isC(six);
            }
        }
        return six;
    }
List<String> list = new ArrayList<String>();
private void Six(String star) {
        String cut = "";
        char[] ar = new char[star.length()];
        for (int i = 0; i < star.length(); i++) {
            ar[i] = star.charAt(i);
        }
        for (int i = 0; i < ar.length; i++) {
            if (ar[i] == 44 && ar[i - 1] == 92) {  
                cut = cut.substring(0, cut.length() - 1);
                cut += String.valueOf(ar[i]);
            } else if (ar[i] == 44) {       
                int num = list.size();
                list.add(num, cut);
                cut = "";
            } else {
                cut += String.valueOf(ar[i]);
                if (i == ar.length - 1) {
                    int num = list.size();
                    list.add(num, cut);
                    cut = "";
                }
            }
        }
    }
代码下载地址: https://pan.quark.cn/s/b4a8e0160cfc 齿轮与轴系零件在机械设备中扮演着至关重要的角色,它们负责实现动力传输、调整运动形态以及承受工作载荷等核心功能。 在机械工程的设计实践中,齿轮和轴系的设计是一项关键的技术任务,其内容涵盖了材料选用、构造规划、承载能力分析等多个技术层面。 下面将系统性地介绍《齿轮及轴系零件结构设计指导书》中的核心知识点。 一、齿轮设计1. 齿轮种类:依据齿廓轮廓的不同,齿轮可划分为直齿齿轮、斜齿轮以及人字齿轮等类别,各类齿轮均具有特定的性能特点与适用工况,能够满足多样化的工作环境与载荷需求。 2. 齿轮规格参数:模数大小、压力角数值、齿数数量、分度圆尺寸等是齿轮设计的基础数据,这些参数直接决定了齿轮的物理尺寸与运行性能。 3. 齿轮材质选用:齿轮材料的确定需综合评估其耐磨损性能、硬度水平以及韧性表现,常用的材料包括铸铁、钢材、铝合金等。 4. 齿轮强度验证:需进行齿面接触应力分析与齿根弯曲应力分析,以确保齿轮在实际运行过程中不会出现过度磨损或结构破坏。 5. 齿轮加工工艺:涉及切削加工、滚齿加工、剃齿加工、淬火处理等工艺流程,工艺方案的选择将直接影响齿轮的加工精度与使用寿命。 二、轴设计1. 轴的分类方式:依据轴在机械装置中的功能定位与受力特点,可将轴划分为心轴、转轴以及传动轴等类型。 2. 轴的材料选择:通常采用钢材作为轴的材料,例如碳素结构钢或合金结构钢,特殊需求时可选用不锈钢材料或轻质合金材料。 3. 轴的构造规划:需详细考虑轴的轴向长度、截面直径、键槽布置、轴承安装位置等要素,以满足轴的强度要求、刚度要求以及稳定性要求。 4. 轴的强度验证:需进行轴的扭转强度分析与弯曲强度分析,以防止轴在运行过程中发生塑性变形...
### Linux 基础操作与概念 #### 一、Linux 文件系统结构 在理解 Linux 的基础命令之前,先要熟悉其独特的文件系统结构。不同于 Windows 系统中的盘符概念,Linux 只有一个根目录 `/` 。所有的文件和子目录都从这里延伸出来[^2]。 #### 二、常用的基础命令 对于初学者来说,掌握以下几个重要的 Linux 命令是非常有帮助的: - **ls**: 列出当前工作目录下的内容 `ls` 或者查看指定路径的内容 `ls /path/to/directory`。 - **cd**: 改变当前的工作目录至目标位置 `cd /new/path`;返回上级目录可以使用 `cd ..`;回到用户的家目录则只需输入 `cd ~` 即可[^1]。 - **pwd**: 显示当前所在的绝对路径 `pwd`。 - **touch**: 创建一个新的空文件或者更新现有文件的时间戳 `touch filename.txt`。 - **rm**: 删除文件或目录 `rm file.txt` (删除单个文件),`rm -r directoryname` (递归删除整个目录及其内部的所有项目)。注意:执行 rm 操作前务必确认无误! - **cp 和 mv** : 复制(cp)以及移动(mv)文件或目录的操作分别为 `cp source destination` 和 `mv old_path new_path`。其中 cp 还支持 `-R` 参数来复制整个目录树。 - **mkdir 和 rmdir**: mkdir 用来创建新的空目录 `mkdir dirname`, 而 rmdir 仅能移除为空状态的目录 `rmdir emptydir`. - **vim/vi 编辑器**: Vim 是 Vi Improved 的缩写,它不仅完全兼容原始版本的功能而且还增加了许多改进特性。通过 vim [filename] 来打开并编辑文本文件。如果该文件尚不存在,则会新建一个同名文档供编辑之用[^4]。 #### 三、特殊用途的重要目录 除了上述提到的一些通用指令外,还有一些特定作用的关键性目录值得特别关注: - **/media**: 此处主要用于挂载外部存储介质如 USB 驱动器或其他便携式媒体设备。一旦连接成功,这些装置就会被自动分配到本级下面的一个相应子夹中以便访问[^3]。 ```bash # 示例:列出 media 下所有已挂载的USB设备 ls /media/user/ ``` #### 四、软件包管理工具简介 为了方便用户安装各种应用程序和服务端组件(比如 Java, Tomcat, Docker),现代 Linux 发行版通常配备了自己的包管理系统。例如,在基于 Red Hat/CentOS 的环境中经常使用的 yum 工具就可以轻松完成这类任务。 ```bash yum install java-1.8.0-openjdk.x86_64 tomcat docker-ce ``` 以上就是关于 Linux 入门所需了解的基本知识点概述。希望这些建议能够为新手提供良好的起点,并激发进一步探索的兴趣。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值