JAVA转义字符详解
一.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转义字符详解相关推荐
- Java数据类型详解
Java数据类型详解 一.为什么byte类型127+1是(-128) 1.计算机中对数据的二进制存储形式-------补码(下面讨讨论的皆为byte类型) 2.为什么计算机设计反码? 3.为什么byt ...
- Apache Thrift - java开发详解
2019独角兽企业重金招聘Python工程师标准>>> Apache Thrift - java开发详解 博客分类: java 架构 中间件 1.添加依赖 jar <depen ...
- Java泛型详解-史上讲解最详细的,没有之一
目录 1. 概述 2. 一个栗子 3. 特性 4. 泛型的使用 4.1 泛型类 4.2 泛型接口 4.3 泛型通配符 4.4 泛型方法 4.4.1 泛型方法的基本用法 4.4.2 类中的泛型方法 4. ...
- Java虚拟机详解----JVM常见问题总结
[正文] 声明:本文只是做一个总结,有关jvm的详细知识可以参考本人之前的系列文章,尤其是那篇:Java虚拟机详解04----GC算法和种类.那篇文章和本文是面试时的重点. 面试必问关键词:JVM垃圾 ...
- java 泛型详解、Java中的泛型方法、 java泛型详解
本文参考java 泛型详解.Java中的泛型方法. java泛型详解 概述 泛型在java中有很重要的地位,在面向对象编程及各种设计模式中有非常广泛的应用. 什么是泛型?为什么要使用泛型? 泛型,即& ...
- 最详细的java泛型详解
来源:最详细的java泛型详解 对java的泛型特性的了解仅限于表面的浅浅一层,直到在学习设计模式时发现有不了解的用法,才想起详细的记录一下. 本文参考java 泛型详解.Java中的泛型方法. ja ...
- Java异常详解及如何处理
来源:Java异常详解及如何处理 简介 程序运行时,发生的不被期望的事件,它阻止了程序按照程序员的预期正常执行,这就是异常.异常发生时,是任程序自生自灭,立刻退出终止,还是输出错误给用户?或者用C语言 ...
- Java基础——Java NIO详解(一)
一.基本概念 1.I/0简介 I/O即输入输出,是计算机与外界世界的一个借口.IO操作的实际主题是操作系统.在java编程中,一般使用流的方式来处理IO,所有的IO都被视作是单个字节的移动,通过str ...
- Java基础——Java NIO详解(二)
一.简介 在我的上一篇文章Java NIO详解(一)中介绍了关于标准输入输出NIO相关知识, 本篇将重点介绍基于网络编程NIO(异步IO). 二.异步IO 异步 I/O 是一种没有阻塞地读写数据的方法 ...
- Java基础——Java IO详解
一.概述 1.Java IO Java IO即Java 输入输出系统.不管我们编写何种应用,都难免和各种输入输出相关的媒介打交道,其实和媒介进行IO的过程是十分复杂的,这要考虑的因素特别多,比如我们要 ...
最新文章
- windows server 2008的安装以及主机IP配置实验
- 寻找U2OS中表达的基因及其promoter并用于后续annotation
- mybatis传参数
- POJ - 3842 An Industrial Spy dfs(水)
- 【HDU - 4509】湫湫系列故事——减肥记II(合并区间模板 or 离散化标记 or 线段树)
- 基于图的图像分割(Graph-Based Image Segmentation)
- DevOps组件高可用的思路
- 行程日志2010-03-16沙井一村(1)
- C案例:打印斐波拉契数列
- 【测试理论基础】史上最强边界值用例设计与实践经验分享
- python标准库不需要导入即可使用其中的所有对象和方法_Python扩展库需导入以后才能使用其中的对象,Python标准库不需要导入即可使用其中的所有对象和方法...
- 【https】对称加密与非对称加密再理解
- 数学建模--正态分布均值的假设检验
- 4244. 【五校联考6day2】yi
- 青岛大学计算机调剂群,2019山东青岛大学硕士研究生调剂公告(4月16日更新)...
- 全球首款iOS模拟器出炉!在违法的边缘疯狂试探
- 为自动驾驶保驾护航—谈谈主流中间件设计
- 终于有人来盘一盘安卓ASO技巧了,安卓市场aso优化技巧
- 矩阵范数,向量范数,奇异值有什么用?
- c语言编程格式缺少语句,17个C语言新手编程时常犯的错误及解决方式
热门文章
- Solution of ZOJ 2748 Free Kick
- 【Educational Codeforces Round 61 (Rated for Div. 2) D.Stressful Training】二分
- 【JAVA】JSR、JCP是什么?
- 新建web.xml文件头报错报红xmlns=http://xmlns.jcp.org/xml/ns/javaee,http://xmlns.jcp.org/xml/ns/javaee/web-ap
- 系统短信验证码实现案例
- Vue3动态加载图片
- ruoyi默认的端口8080被占用,修改前后端端口号
- [SSL_CHX][2021-08-18]圆的面积
- 关于C++中<iostream>操作算子ends显示问题
- 计算机怎么通电启动,电脑通电自动开机怎么设置