算法:单引号不匹配模式

时间:2017-04-05 17:34:06

标签: java

我有一个问题,我将有一个模板,如:

"Tada lala at ha on EEEE (MMM d)."

需要传递给DateTimeFormatter.format()

所以我们需要引用像

这样的文字文本
" 'Tada lala at' ha 'on' EEEE (MMM d)."

因此日期模式可能会随着时间的推移而发展:

"ha 'on' EEEE 'tada lala at' ha 'on' MMM, d"

我正在展示使用的真实代码:

Date myDate; // which I just computed.
String template = getTemplateFromDB();//" 'Tada lala at' ha 'on' EEEE (MMM d)."
String formattedStr = DateTimeFormatter(date, template);

因此,通过进化,我的意思是模板字符串将被演化,但它将驻留在数据库中,因此代码将不会耦合。

因此,我需要找到一种算法,该算法只将文字文本放在单引号中,但仅保留(EEEE)等日期模式。什么是表现最佳的算法?

我有一个草案算法:

String myRegEx = "(EEEE|MMM|d|...)";
ArrayList<Integer> positionsFound; // a list that is populated with the index positions of the myRegEx patterns are located.

String[] splittedText = myStr.split(); // " 'Tada lala at' ha 'on' EEEE (MMM d)."

StringBuffer sbuf = new StringBuffer();

for (int i = 0;i < splittedText.length;i++) {
    if (!positionsFound.contains(i)) {
        splittedText[i] = "'"+splittedText[i]+"'";
    }
    sbuf.append(splittedText[i]+" ");
}

return sbuf.toString();

0 个答案:

没有答案
相关问题