2015-10-05 64 views
0

我已被数据填充到与实施例的数据的字符串:如何分割/解析Java字符串以干净地显示项目符号?

包括:1. Lorem存有2.等等等等 3.测试测试Exlude:1.快速褐色2.fox 3.跃过

现在我们正在显示的字符串,不过是想拥有它的一个很好的格式化的方式,例如向用户显示:

包括:

  1. Lorem存有
  2. 等等等等
  3. 试验测试

排除:

  1. 快速褐色
  2. 狐狸
  3. 跃过

为了使事情更复杂,似乎这个String没有真正的要求。有时数据由数字(1,2,3),有时由项目符号点(∙)分开,有时由( - )分隔。

不知道是否有一个库可以帮助这种类型的格式化,现在想法明智我正在考虑制作一个新的formattedToString()方法,我可以调用它来填充我的popup div,可能使用一些正则表达式(我只知道简单的正则表达式)。如果有帮助的话,我们使用ThymeLeaf作为模板引擎。

感谢您的任何想法/帮助!

+4

这似乎不是一个好主意给我。项目符号和枚举列表应该是CSS控制的东西。服务器端应该只是给页面显示字符串列表;格式是CSS作业。 – duffymo

+0

您所描述的非格式声音与Markdown(您用于编写问题的风格)类似。如果它确实是Markdown,那么你可能会应用Markdown-to-HTML转换器,然后解析HTML(使用* bona fide * HTML解析器)。 –

+2

然而,如果你真的不知道输入格式,那么你根本无法合理地完成你所描述的内容,因为这将构成你自己定义的格式。在这种情况下,最好将它作为一个扁平字符串保留(但保留用户提供的任何格式,如换行符和空格,如果以HTML格式显示,则需要小心)。 –

回答

1

为了您的例子,你可以使用这样的正则表达式:

\b(?=\d+\.|Exclude:) 

随着替换字符串:

\n 

的想法是,以确定要使用添加\n模式。因此,对于上述正则表达式,它将使用number[s] followed by a dot或单词exclude:。如果你想添加更多的模式,你必须这样做:

\b(?=Patt1|Patt2|...|PattN) 

Working demo

enter image description here

1

假设:

  • 我们使用ThymeLeaf
  • 决赛输出将是HTML
  • 包含第一位;不包括排第二(总)
  • 闲来无事包含在字符串

我们可以:

  1. 更换includeinclude<br/><ol>

    ${#strings.replace(line, 'include', 'include&lt;br /&gt;&lt;ol&gt;')}

  2. 替换所有数字,或连字符或项目符号点(在传入列表中) <li>

    ${#strings.replace(line, '-', '&lt;li&gt;')}

  3. 替换exclude</ol>exclude<br/><ol>

    ${#strings.replace(line, 'exclude', '&lt;/ol&gt;exclude&lt;br /&gt;&lt;ol&gt;')}

  4. 追加</ol>到进入的列表字符串(即输入)