一.JAVA中反斜杠“”的作用

在不同的系统中,路径的分隔符不同,故需要做出判断,并切换分隔符

VBS代码中确实不用转义,但是在JAVA或JS中,它采用的是C语言的语法,所以要转义,引号内要双写\表示一个反。

① java把字符串中的反斜杠()替换成(\)

replaceAll里面用的是正则表达式,所以字符串转义一次,正则转义一次,所以一个斜扛要写4个,用replaceAll(“\\”,“\\\\”);

二.split(“\.”)什么意思

1. 首先要明白split方法的参数含义:
public String[] split(String regex)根据给定的正则表达来式的匹配来拆分此字符串

2. 然后就要明确正则表达式的含义了:

  • '.'点 匹配除“ ”和" "之外的任何单个字符。

  • ''表示转义字符

\会转义成反斜杠,反斜杠本身就是转义符,所有就成了“.”,在进行转义就是.,所以\.实际上是“.”

三.正则表达式

正则表达式,又称规则表达式。(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。

许多程序设专计语言都支持利用正则表达式进行字符串操作。例如,在Perl中就内建了一个功能强大的正则表达式引擎。正则表达式这个概念最初是由属Unix中的工具软件(例如sed和grep)普及开的。正则表达式通常缩写成“regex”,单数有regexp、regex,复数有regexps、regexes、regexen。

四.Java中转义字符反斜杠 的代替方法 | repalceAll 内涵解析

4.1需求

现有一个字符串str

String str = “{\“name\”:\“spy\”,\“id\\”:\“123456\”}”;
System.out.println("str = " + str);
在控制台的输出为:

str = {“name”:“spy”,“id”:“123456”}
目标:将str转化为标准的json格式串str1,以调用JsonUtil的方法,将字符串转为map。即目标str1为:

str1 = {“name”:“spy”,“id”:“123456”}

4.2实现方法

4.3Java 的replaceAll 内涵解析

使用Java的replaceAll(String regex, String replacement)函数,即用replacement替换所有的regex匹配项,regex是一个正则表达式,replacement是字符串。

String str = “{\“name\”:\“spy\”,\“id\\”:\“123456\”}”;

(1)对于串str,Java将其进行转义,\ 表示 ,” 表示 ” ,故而在Java内存中即为:
{”name”:”spy”,”id”:”123456”},然而,我们的目标是 {“name”:”spy”,”id”:”123456”},即将转义字符 替换为空。

(2)Java的replaceAll(String regex, String replacement)函数,第一个参数是一个正则表达式。在正则表达式中的“”与后面紧跟的那个字符构成一个转义字符,代表着特殊的意义,比如” ”表示换行符等。所以,如果要在正则表达式中表示一个反斜杠,则应当用\表达 。但参数regex 首先会经过Java的一次转义,若想表达两个反斜杠 \,则需四个反斜杠。

综上所述:replaceAll 的第一个参数是正则表达式,故而要经过两次转义,一次Java、一次正则。因此就需要四个反斜杠才可以匹配一个反斜杠。故而,替换一个反斜杠为空的replaceAll的代码即为:
str1 = str.replaceAll(“\\”,“”);

4.4补充说明

参考网址:

https://blog.csdn.net/proteen/article/details/78885867

https://blog.csdn.net/north_easter/article/details/7904865

五.网址带中文问题

java.net.URLEncoder.encode(“xxxx”,“utf-8”)将中文转为16进制字符。

java.net.URLDncoder.decode(“xxxx”,“utf-8”)将16进制字符转为中文。

5.1实战

后台传回的网址:http://192.168.1.17:8096/detection-adminideo?0 浙B99939e4252011040004浙B99939_1_PDASP_01.mp4

通过工具类转换:

    /*** @author Longchengbin* @description 将网址反斜杠转成正斜杠并将中文转为16进制字符* @since 2020-11-4 16:33**/public static String decode(String url) {String[] strings = url.split("\\");String s1 = strings[strings.length - 1];String s2 = strings[strings.length - 3];String s = "";try {//将反斜杠替换成正斜杠s = url.replaceAll("\\", "/").//将中文转成16进制字符replace(s1, URLEncoder.encode(s1, "utf-8")).replace(s2, URLEncoder.encode(s2, "utf-8"));LogUtils.w(s);} catch (UnsupportedEncodingException e) {LogUtils.e("网址转换报错:" + e.toString());}return s;}

转换后:

http://192.168.1.17:8096/detection-admin/video/2020/11/4/%E6%B5%99B99939/3604252011040004/%E6%B5%99B99939_1_PDASP_01.mp4

JAVA转义字符详解相关推荐

  1. Java数据类型详解

    Java数据类型详解 一.为什么byte类型127+1是(-128) 1.计算机中对数据的二进制存储形式-------补码(下面讨讨论的皆为byte类型) 2.为什么计算机设计反码? 3.为什么byt ...

  2. Apache Thrift - java开发详解

    2019独角兽企业重金招聘Python工程师标准>>> Apache Thrift - java开发详解 博客分类: java 架构 中间件 1.添加依赖 jar <depen ...

  3. Java泛型详解-史上讲解最详细的,没有之一

    目录 1. 概述 2. 一个栗子 3. 特性 4. 泛型的使用 4.1 泛型类 4.2 泛型接口 4.3 泛型通配符 4.4 泛型方法 4.4.1 泛型方法的基本用法 4.4.2 类中的泛型方法 4. ...

  4. Java虚拟机详解----JVM常见问题总结

    [正文] 声明:本文只是做一个总结,有关jvm的详细知识可以参考本人之前的系列文章,尤其是那篇:Java虚拟机详解04----GC算法和种类.那篇文章和本文是面试时的重点. 面试必问关键词:JVM垃圾 ...

  5. java 泛型详解、Java中的泛型方法、 java泛型详解

    本文参考java 泛型详解.Java中的泛型方法. java泛型详解 概述 泛型在java中有很重要的地位,在面向对象编程及各种设计模式中有非常广泛的应用. 什么是泛型?为什么要使用泛型? 泛型,即& ...

  6. 最详细的java泛型详解

    来源:最详细的java泛型详解 对java的泛型特性的了解仅限于表面的浅浅一层,直到在学习设计模式时发现有不了解的用法,才想起详细的记录一下. 本文参考java 泛型详解.Java中的泛型方法. ja ...

  7. Java异常详解及如何处理

    来源:Java异常详解及如何处理 简介 程序运行时,发生的不被期望的事件,它阻止了程序按照程序员的预期正常执行,这就是异常.异常发生时,是任程序自生自灭,立刻退出终止,还是输出错误给用户?或者用C语言 ...

  8. Java基础——Java NIO详解(一)

    一.基本概念 1.I/0简介 I/O即输入输出,是计算机与外界世界的一个借口.IO操作的实际主题是操作系统.在java编程中,一般使用流的方式来处理IO,所有的IO都被视作是单个字节的移动,通过str ...

  9. Java基础——Java NIO详解(二)

    一.简介 在我的上一篇文章Java NIO详解(一)中介绍了关于标准输入输出NIO相关知识, 本篇将重点介绍基于网络编程NIO(异步IO). 二.异步IO 异步 I/O 是一种没有阻塞地读写数据的方法 ...

  10. Java基础——Java IO详解

    一.概述 1.Java IO Java IO即Java 输入输出系统.不管我们编写何种应用,都难免和各种输入输出相关的媒介打交道,其实和媒介进行IO的过程是十分复杂的,这要考虑的因素特别多,比如我们要 ...

最新文章

  1. windows server 2008的安装以及主机IP配置实验
  2. 寻找U2OS中表达的基因及其promoter并用于后续annotation
  3. mybatis传参数
  4. POJ - 3842 An Industrial Spy dfs(水)
  5. 【HDU - 4509】湫湫系列故事——减肥记II(合并区间模板 or 离散化标记 or 线段树)
  6. 基于图的图像分割(Graph-Based Image Segmentation)
  7. DevOps组件高可用的思路
  8. 行程日志2010-03-16沙井一村(1)
  9. C案例:打印斐波拉契数列
  10. 【测试理论基础】史上最强边界值用例设计与实践经验分享
  11. python标准库不需要导入即可使用其中的所有对象和方法_Python扩展库需导入以后才能使用其中的对象,Python标准库不需要导入即可使用其中的所有对象和方法...
  12. 【https】对称加密与非对称加密再理解
  13. 数学建模--正态分布均值的假设检验
  14. 4244. 【五校联考6day2】yi
  15. 青岛大学计算机调剂群,2019山东青岛大学硕士研究生调剂公告(4月16日更新)...
  16. 全球首款iOS模拟器出炉!在违法的边缘疯狂试探
  17. 为自动驾驶保驾护航—谈谈主流中间件设计
  18. 终于有人来盘一盘安卓ASO技巧了,安卓市场aso优化技巧
  19. 矩阵范数,向量范数,奇异值有什么用?
  20. c语言编程格式缺少语句,17个C语言新手编程时常犯的错误及解决方式

热门文章

  1. Solution of ZOJ 2748 Free Kick
  2. 【Educational Codeforces Round 61 (Rated for Div. 2) D.Stressful Training】二分
  3. 【JAVA】JSR、JCP是什么?
  4. 新建web.xml文件头报错报红xmlns=http://xmlns.jcp.org/xml/ns/javaee,http://xmlns.jcp.org/xml/ns/javaee/web-ap
  5. 系统短信验证码实现案例
  6. Vue3动态加载图片
  7. ruoyi默认的端口8080被占用,修改前后端端口号
  8. [SSL_CHX][2021-08-18]圆的面积
  9. 关于C++中<iostream>操作算子ends显示问题
  10. 计算机怎么通电启动,电脑通电自动开机怎么设置