如何拆分/解析Java String以使用项目符号清晰显示?

时间:2015-10-05 20:28:07

标签: java regex formatting string-formatting thymeleaf

我将数据填充到带有示例数据的字符串中:

  

包括:1。lorem ipsum 2. blah blah   3.测试测试排除:1。快速棕色2.fox 3.跳过

现在我们按原样显示字符串,但希望以格式良好的方式向用户显示,例如:

  

包括:

     
      
  1. lorem ipsum
  2.   
  3. blah blah
  4.   
  5. 测试测试
  6.         

    排除:

         
        
    1. 快速的棕色
    2.   
    3.   
    4. 跳过
    5.   

为了使事情变得更复杂,似乎没有对此字符串的实际要求。有时数据用数字(1,2,3)分隔,有时用子弹点(∙)分隔,有时用极数( - )分隔。

不确定是否已经构建了一个库以帮助这种类型的格式化,现在想法明智我想要创建一个新的formattedToString()方法,我可以调用它来填充我的弹出div,可能使用一些正则表达式(我只知道简单的正则表达式)。我们正在使用ThymeLeaf作为模板引擎,如果这也有帮助的话。

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

2 个答案:

答案 0 :(得分:1)

对于您的示例,您可以使用这样的正则表达式:

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

使用替换字符串:

\n

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

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

<强> Working demo

enter image description here

答案 1 :(得分:1)

假设:

  • 我们正在使用ThymeLeaf
  • 最终输出将为HTML
  • 包括先到先得;排除第二(总是)
  • 字符串
  • 中不包含任何其他内容

我们可以:

  1. include替换为include<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>附加到传入列表字符串(即输入)