`
snowtigersoft
  • 浏览: 55218 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

properties文件中定义大括号

    博客分类:
  • java
CSS 
阅读更多

今天遇到一个很郁闷的问题,使用MessageFormat.applyPattern时一直抛出异常:

java.lang.IllegalArgumentException: can't parse argument number margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px;

经过检查是properties文件中的“{”引起的,因为这一段是css的style,但是applyPattern是将这个“{”当成占位符处理了,\u007B也试过了,不好使,没办法只能查看java源代码,这个方法的代码如下:

public void applyPattern(String pattern) {
            StringBuffer[] segments = new StringBuffer[4];
            for (int i = 0; i < segments.length; ++i) {
                segments[i] = new StringBuffer();
            }
            int part = 0;
            int formatNumber = 0;
            boolean inQuote = false;
            int braceStack = 0;
            maxOffset = -1;
            for (int i = 0; i < pattern.length(); ++i) {
                char ch = pattern.charAt(i);
                if (part == 0) {
                    if (ch == '\'') {
                        if (i + 1 < pattern.length()
                            && pattern.charAt(i+1) == '\'') {
                            segments[part].append(ch);  // handle doubles
                            ++i;
                        } else {
                            inQuote = !inQuote;
                        }
                    } else if (ch == '{' && !inQuote) {
                        part = 1;
                    } else {
                        segments[part].append(ch);
                    }
                } else  if (inQuote) {              // just copy quotes in parts
                    segments[part].append(ch);
                    if (ch == '\'') {
                        inQuote = false;
                    }
                } else {
                    switch (ch) {
                    case ',':
                        if (part < 3)
                            part += 1;
                        else
                            segments[part].append(ch);
                        break;
                    case '{':
                        ++braceStack;
                        segments[part].append(ch);
                        break;
                    case '}':
                        if (braceStack == 0) {
                            part = 0;
                            makeFormat(i, formatNumber, segments);
                            formatNumber++;
                        } else {
                            --braceStack;
                            segments[part].append(ch);
                        }
                        break;
                    case '\'':
                        inQuote = true;
                        // fall through, so we keep quotes in other parts
                    default:
                        segments[part].append(ch);
                        break;
                    }
                }
            }
            if (braceStack == 0 && part != 0) {
                maxOffset = -1;
                throw new IllegalArgumentException("Unmatched braces in the pattern.");
            }
            this.pattern = segments[0].toString();
    }

 发现这一段:

if (ch == '\'') {
                        if (i + 1 < pattern.length()
                            && pattern.charAt(i+1) == '\'') {
                            segments[part].append(ch);  // handle doubles
                            ++i;
                        } else {
                            inQuote = !inQuote;
                        }
                    } 

 原来转移符竟然是“\'”。。。想用单引号就写成“\'\'”

1
0
分享到:
评论

相关推荐

    JS编辑器(源代码,能打开*.js,*.xml,*.properties文件)

    【JS编辑器】是一款专为JavaScript、XML以及Java属性文件(.properties)设计的源代码编辑工具。它允许用户在工程的"src"目录下直接打开这些特定类型的文件,并在编辑区域中清晰地查看和编辑文件内容。这款编辑器...

    swift-Calculator数学表达式类用于简单的计算器包含加减乘除括号

    2. **属性(Properties)**:在`Calculator`类中,可能包括存储当前运算结果的`result`属性,以及可能用于存储中间计算结果或操作符的其他私有属性。 3. **方法(Methods)**:类的方法定义了类的行为。对于`Calculator...

    SciTE-for-au3-and-ahk.rar_ahk 配置文件_au3_au3-scite

    - **ahk.properties**:此文件专门针对AutoHotkey,定义了SciTE如何理解和显示ahk源代码,包括语法高亮规则、括号匹配、代码折叠等功能。 - **au3.properties**:同样,这个文件为AutoIt3提供特定的配置,确保SciTE...

    如何编写批处理文件批处理文件批处理文件

    在命令提示下键入批处理文件的名称,或者双击该批处理文件,系统就会调用Cmd.exe按照该文件中各个命令出现的顺序来逐个运行它们。使用批处理文件(也被称为批处理程序或脚本),可以简化日常或重复性任务。当然我们...

    android stdio ini文件存储_Android

    2. **Gradle配置**:在项目的`gradle.properties`文件中,可以定义全局或项目级别的Gradle属性。这些属性可以用来控制构建过程,例如,设置Gradle的代理设置、存储库URL等。 3. **插件配置**:Android Studio中的第...

    scite 3.2.5 改版( x64 )

    6. `html.properties`:HTML是网页开发的基础语言,这个文件定义了HTML的语法高亮规则,使HTML代码在Scite中更加清晰易读。 7. `abbrev.properties`:这个文件可能包含了一些缩写规则,允许用户通过简短的输入触发...

    PDF高级Android组件化强化实战(附源码1

    书中还提及了`gradle`文件中的语法差异,解释了大括号、等号和冒号的用法,这些都是配置文件中常见的语法结构,用于定义变量、设置值以及表示映射关系。 总之,《PDF高级Android组件化强化实战》是一本深入浅出的...

    ini文件的读取

    在IT领域,尤其是在软件开发与配置管理中,`ini`文件是一种常见的文本格式,用于存储配置数据。`ini`文件的结构清晰,易于理解和编辑,因此被广泛应用于各种应用程序的设置存储。本文将深入探讨如何在Java环境中读取...

    java解析json

    5. **处理中括号中的数组** 当遇到JSON数组(如`level2_1`),Jackson会自动将其映射为Java的`List`或自定义的集合类。在上述示例中,`Level2`被映射为`List&lt;Level2&gt;`。同样,对于JSON对象(如`level2_2`),...

    强大的文本编辑器 scite

    用户可以通过修改配置文件(.properties)来自定义编辑器的主题、字体大小、颜色方案,甚至可以添加自定义的语法高亮规则。这种高度定制化的能力使得每个用户都能根据自己的工作习惯和喜好调整编辑环境。 对于C++...

    scite 2.24

    这些API文件定义了Scite对特定编程语言的语法支持。例如,`cpp.api`是为C++语言定制的,它包含了C++关键词、预处理器指令和标准库函数的语法规则。`opengl.api`则是为OpenGL编程提供语法高亮和代码辅助。`pas.api`...

    Vue2bannertestone测试文件项目.rar

    3. **数据绑定**:Vue 2使用双括号`{{ }}`进行数据绑定,将模板中的变量与Vue实例的数据对象关联。在组件的模板中,我们可以看到这种数据绑定的使用,例如`{{ message }}`。 4. **计算属性与侦听器**:Vue 2 提供了...

    json调用json调用json调用json调用

    其主要数据类型包括对象(以大括号{}包围)、数组(以方括号[]包围)、字符串、数字、布尔值和null。 在JSON中,对象是一组键值对,键由双引号包围,与对应的值之间用冒号分隔,多个键值对之间用逗号分隔。例如: `...

    struts2学习笔记黑马程序员

    2. **定义Action类**:在Action类中定义接收文件的方法,并使用Struts2提供的API完成文件的保存操作。 **注意事项:** - **文件大小限制**:默认情况下,Struts2对上传文件的大小有限制。可以在`struts.xml`或`...

    Matlab Object Oriented Programming

    3. **添加属性和方法**:在类定义块中,分别使用`properties`和`methods`关键字来定义属性和方法。 示例代码如下: ```matlab classdef MyObject properties value % 定义一个属性 end methods function ...

    CSS技巧与工具(EditPlus语法文件下载)

    EditPlus的语法文件(如压缩包中的`plsql.stx`和`plsql.acp`)是用于定义特定语言的语法色彩和快捷键设置。`plsql.stx`可能是PL/SQL(Oracle数据库的编程语言)的语法文件,而`plsql.acp`可能包含了PL/SQL的自动完成...

    SciTE 1.77 中文版.rar

    很好用的工具,传来与大家共享: SciTE 绿色软件,不写注册表。 SciTE 是个开源的优秀且小巧功能强大的编辑器!...Scite.exe SciLexer.dll,Scintilla.dll 和其他的语言的properties文件一起使用。

    Struts2.1学习笔记

    - **全局类型转换器**:通过配置文件定义的类型转换器,对整个应用有效。 #### 文件上传 - **单个文件上传**: - **添加jar包**:需要引入文件上传相关的jar包,如`commons-fileupload`和`commons-io`。 - **...

    winform excel表格数据导入datagridview

    - 在实际项目中,通常会在选择文件后调用之前定义的方法`GetDataFromExcel`来获取Excel数据,然后将这些数据绑定到DataGridView上。 - 绑定过程通常是通过设置DataGridView的`DataSource`属性为`DataTable`对象。 ...

    SciTe完美设置版(PHP编辑器)

    对于PHP开发者,phpfunctions.properties文件确保了PHP语法的正确高亮和编辑体验。 3. **自定义配置**:“完美设置版”可能意味着编辑器已经预设了一些适合PHP开发者的选项,比如自动完成、代码折叠、错误检测等...

Global site tag (gtag.js) - Google Analytics