private static class FormatRule {
private Pattern mPattern;
private String mReplaceWith;
/**
* Create a wiki formatting rule.
*
* @param pattern Search string to be compiled into a {@link Pattern}.
* @param replaceWith String to replace any found occurances with. This
* string can also include back-references into the given
* pattern.
* @param flags Any flags to compile the {@link Pattern} with.
*/
public FormatRule(String pattern, String replaceWith, int flags) {
mPattern = Pattern.compile(pattern, flags);
mReplaceWith = replaceWith;
}
/**
* Create a wiki formatting rule.
*
* @param pattern Search string to be compiled into a {@link Pattern}.
* @param replaceWith String to replace any found occurances with. This
* string can also include back-references into the given
* pattern.
*/
public FormatRule(String pattern, String replaceWith) {
this(pattern, replaceWith, 0);
}
/**
* Apply this formatting rule to the given input string, and return the
* resulting new string.
*/
public String apply(String input) {
Matcher m = mPattern.matcher(input);
return m.replaceAll(mReplaceWith);
}
}
/**
* List of internal formatting rules to apply when parsing wiki text. These
* include indenting various bullets, apply italic and bold styles, and
* adding internal linking.
*/
private static final List<FormatRule> sFormatRules = new ArrayList<FormatRule>();
static {
// Format header blocks and wrap outside content in ordered list
sFormatRules.add(new FormatRule("^=+(.+?)=+", "</ol><h2>$1</h2><ol>",
Pattern.MULTILINE));
// Indent quoted blocks, handle ordered and bullet lists
sFormatRules.add(new FormatRule("^#+\\*?:(.+?)$", "<blockquote>$1</blockquote>",
Pattern.MULTILINE));
sFormatRules.add(new FormatRule("^#+:?\\*(.+?)$", "<ul><li>$1</li></ul>",
Pattern.MULTILINE));
sFormatRules.add(new FormatRule("^#+(.+?)$", "<li>$1</li>",
Pattern.MULTILINE));
// Add internal links
sFormatRules.add(new FormatRule("\\[\\[([^:\\|\\]]+)\\]\\]",
String.format("<a href=\"%s://%s/$1\">$1</a>", WIKI_AUTHORITY, WIKI_LOOKUP_HOST)));
sFormatRules.add(new FormatRule("\\[\\[([^:\\|\\]]+)\\|([^\\]]+)\\]\\]",
String.format("<a href=\"%s://%s/$1\">$2</a>", WIKI_AUTHORITY, WIKI_LOOKUP_HOST)));
// Add bold and italic formatting
sFormatRules.add(new FormatRule("'''(.+?)'''", "<b>$1</b>"));
sFormatRules.add(new FormatRule("([^'])''([^'].*?[^'])''([^'])", "$1<i>$2</i>$3"));
// Remove odd category links and convert remaining links into flat text
sFormatRules.add(new FormatRule("(\\{+.+?\\}+|\\[\\[[^:]+:[^\\\\|\\]]+\\]\\]|" +
"\\[http.+?\\]|\\[\\[Category:.+?\\]\\])", "", Pattern.MULTILINE | Pattern.DOTALL));
sFormatRules.add(new FormatRule("\\[\\[([^\\|\\]]+\\|)?(.+?)\\]\\]", "$2",
Pattern.MULTILINE));
}
分享到:
相关推荐
在JDK1.5中,String类增加了一个非常有用的静态函数format(String format,...该函数对c语言中printf函数的用法进行了一定的模仿,因此有c语言基础的人学起来会轻松许多。下面我们着重讨论一下format 参数的格式及含义。
在实际使用`google-java-format` 时,开发者可以根据项目需求选择相应的配置,例如设置代码风格的版本,决定是否忽略某些规则,或者自定义格式化行为。同时,通过持续集成(CI)流程,可以确保提交到版本控制系统的...
除了基础的格式化功能,`google-java-format` 还可以与其他代码质量工具结合使用,例如Checkstyle、PMD或FindBugs,以实现更全面的代码质量检查和改进。通过这种方式,开发者可以更加专注于编写功能,而不用担心编码...
在本主题中,我们将深入探讨“Java基础之计算器”的实现,这是一个典型的编程实践项目,用于增强对Java语言的理解。计算器程序通常包括基本的数学运算,如加、减、乘、除,以及可能的更复杂的计算功能。这个项目可以...
根据提供的资料,“Java李兴华学习笔记之Java常用类库”这份文档来源于北京MLDN软件实训中心的教学资料,主要涵盖了Java编程语言中常用类库的基础知识与实践技巧。课程内容分为两大部分: 1. **上次课程的主要知识...
JAVA中的`String.format`方法是一种强大的工具,用于创建格式化的字符串。它允许用户按照指定的模式格式化输出,尤其在处理数字、字符、日期等数据类型时极为有用。接下来,我们将深入探讨`String.format`方法如何...
根据提供的文件信息,我们可以归纳出一系列关于Java基础知识的关键知识点。以下是对这些知识点的详细解析: ### 1. Java 的跨平台特性 Java 最为人所熟知的特点之一就是它的跨平台能力,即“一次编写,到处运行”...
Java中的Date和Calendar类是处理日期和时间的核心组件。Date类主要用于表示特定的瞬间,精确到毫秒。在早期版本的Java中,Date类的设计受到批评,因为它的API不直观且容易导致错误。为了解决这些问题,大部分日期和...
Java 基础类 Java 语言提供了丰富的基础类,以便程序员更方便地编写程序。这些基础类主要分布在 java.lang、java.util、java.io、java.sql、java.text 等包中。 1. 包装类 包装类是 Java 语言中最基本的类之一,...
本文将深入探讨`@JsonFormat`注解的使用,以及它在Jackson库中的作用,特别是与`jackson-annotations.jar`、`jackson-core.jar`和`jackson-databind.jar`这三个核心组件的关系。 首先,让我们了解Jackson的基本构成...
它是Java基础中非常重要的一个概念,因为几乎在所有类型的程序中都会用到数组。数组可以存储基本数据类型,也可以存储对象的引用。数组一旦创建,其大小就固定不变。 Java提供了八种基本数据类型来表示数字,这些...
在IT行业中,代码格式化是开发...总的来说,理解和使用"format模板"对于提升代码质量和团队协作效率至关重要,而华为提供的`huawei_code_formater.xml`和`huawei_codetemplates.xml`文件则是实现这一目标的有效工具。
总的来说,`java.util.Date` 类在获取和表示当前系统时间上是一个基础且实用的工具,虽然在新的Java版本中有了更好的替代品,但理解其工作原理对于理解Java的日期和时间处理至关重要。在实际编程中,根据项目需求和...
例如,在我们的代码中,我们使用`System.out.print`方法来输出星期的名称,并使用`String.format`方法来格式化输出日期。 知识点5:异常处理 在实现日历功能时,我们需要使用异常处理来捕捉可能出现的错误。在Java...
Java SE基础课程是针对初学者设计的一门课程,主要涵盖了Java编程语言的基础知识。这门课程将引导学生深入了解Java的核心概念,包括数据类型、控制结构、类与对象、异常处理等,同时也涉及到一些核心库的使用,如...
Java编程语言在处理科学数据时,常常会遇到HDF5(Hierarchical Data Format 5)这种文件格式。HDF5是一种高效、灵活的数据存储格式,广泛应用于科研、工程等领域,支持大数据存储和复杂的多维数组操作。为了在Java中...
### Java基础入门学习教程知识点概览 #### 第1章:Java语言概述 ##### 1.1 Java语言的产生 - **起源**:Java语言由Sun Microsystems公司于1995年发布,最初由James Gosling领导开发。 - **背景**:Java的设计目标...
java.lang 提供利用 Java 编程语言进行程序设计的基础类。 java.lang.annotation 为 Java 编程语言注释设施提供库支持。 java.lang.instrument 提供允许 Java 编程语言代理检测运行在 JVM 上的程序的服务。 java....
Java实战讲解 - 基础 在编程世界中,Java是一种广泛应用的面向对象的编程语言,具有丰富的类库和强大的功能。本篇将探讨Java实战中的基础知识点,特别是字符串处理和占位替换技术,这对于日常编码工作至关重要。 ...