zoukankan      html  css  js  c++  java
  • 反斜杠转义测试结果记录

    如果遇到java中对正则表达式的操作时要注意,匹配的字符串不仅要在java字符串中做转义处理,在正则表达式过程中也需要做转义处理,需要考虑两次转义逻辑。

    详情看下面的几个例子:

    public static void test() {
            String str = "a\"b\"c";    //注释:相当于a"b"c
            String r = "\"";    //注释:相当于"
            String[] split = str.split(r);
            System.out.println("\"a\\\"b\\\"c\".split(\"\\\"\")的测试结果为: "+Arrays.asList(split).toString());
        }
    输出如下:
    "a\"b\"c".split("\"")的测试结果为: [a, b, c]
    public static void test() {
            String str = "a\"b\"c";    //注释:相当于a"b"c
            String r = "\\\"";    //注释:相当于\",由于引号在正则表达式中没有特殊含义,故转义之后还是引号所以和上例结果一致
            String[] split = str.split(r);
            System.out.println("\"a\\\"b\\\"c\".split(\"\\\\\\\"\")的测试结果为: "+Arrays.asList(split).toString());
        }
    输出如下:
    "a\"b\"c".split("\\\"")的测试结果为: [a, b, c]
    public static void test() {
            String str = "a\\\"b\\\"c";    //相当于a\"b\"c
            String r = "\\\"";    //相当于\",由于引号转义之后还是引号所以和用String r = "\""去截的结果一致
            String[] split = str.split(r);
            System.out.println("\"a\\\\\\\"b\\\\\\\"c\".split(\"\\\\\\\"\")的测试结果为: "+Arrays.asList(split).toString());
        }
    输出如下:
    "a\\\"b\\\"c".split("\\\"")的测试结果为: [a\, b\, c]
    public static void test() {
            String str = "a\\\"b\\\"c";    //注释:相当于a\"b\"c
            String r = "\\\\";    //注释:相当于\\,这里必须这么写,如果写成String r = "\\",在执行到下面split操作时,正则表达式参数r相当于是\,会报错。
            String[] split = str.split(r);
            System.out.println("\"a\\\\\\\"b\\\\\\\"c\".split(\"\\\\\\\\\")的测试结果为: "+Arrays.asList(split).toString());
        }
    输出如下:
    "a\\\"b\\\"c".split("\\\\")的测试结果为: [a, "b, "c]
    public static void test() {
            String str = "a\\\"b\\\"c";    //注释:相当于a\"b\"c
            String r = "\\\\\"";    //注释:相当于\\",如果改成String r = "\\\\\\\"",效果一样,因为"在匹配正则表达时不需要转义,在java字符串中才需要转义
            String[] split = str.split(r);
            System.out.println("\"a\\\\\\\"b\\\\\\\"c\".split(\"\\\\\\\\\\\"\")的测试结果为: "+Arrays.asList(split).toString());
        }
    输出如下:
    "a\\\"b\\\"c".split("\\\\\"")的测试结果为: [a, b, c]
  • 相关阅读:
    css实现左栏固定右栏自适应,高度自适应的布局
    使用canvas检测HTML5视频解码错误
    与webview打交道中踩过的那些坑
    走进AngularJs(五)自定义指令----(下)
    走进AngularJs(四)自定义指令----(中)
    走进AngularJs(三)自定义指令-----(上)
    为jQuery的$.ajax设置超时时间
    走进AngularJs(二) ng模板中常用指令的使用方式
    走进AngularJs(一)angular基本概念的认识与实战
    Javascript事件模型系列(四)我所理解的javascript自定义事件
  • 原文地址:https://www.cnblogs.com/allenben/p/4727853.html
Copyright © 2011-2022 走看看