在拆分中使用分隔符

时间:2016-01-02 14:55:01

标签: java tokenize delimiter

我正在尝试制作一个标记源代码的程序。我应该如何使用拆分来对此进行标记:

if a == b
 b = c

这是我的代码:

String WITH_DELIMITER = "((?<=%1$s)|(?=%1$s))";

^来自stackoverflow的人提供了这个^

String[] tokens = newfile1.split(String.format(WITH_DELIMITER, "(==)|(\\=)"));

此代码生成:

if
a
=
=
b
b
=
c

但我希望它是

if
a
==
b
b
=
c

1 个答案:

答案 0 :(得分:0)

按照评论中的建议拆分空白是一种可能性。稍微好一点的方法是使用单词边界,这样它就可以在没有空格的输入上工作(比如<%= simple_form_for ([@playlist, current_user.playlist.songs.build]) do |f| %> ):

if a==b then b=c

这将生成一些空标记,其中一次有多个匹配(即,空格后跟一个单词边界,反之亦然),如下所示:pattern = "\\s*\\b\\s*" ,所以你必须先将它们过滤掉