如何使用Java格式化一周中的字符串?

时间:2014-08-10 17:24:47

标签: java

使用Java 6,并使用输入字符串(来自此类条目的数组),其中包含以下顺序中的星期几的任意组合

MTWThF

如何格式化字符串以使其获得

M,T,W,Th,F(即除了最后一天之外的每天之后的逗号)

字符串表示员工的工作日。 再一次,这里是'捕获'(没有Java双关语) - 任何员工都可以工作任何天的组合。

因此,输入有时可能是

MW

所以输出应该是

M,W

我已经使用了replaceAll()方法并且我已经接近但我必须在字符串上多次调用该方法才能执行此操作。
所以我想也许有人做过这个 - 或类似的东西 - 之前发现了一种更简单的方法。 谢谢

1 个答案:

答案 0 :(得分:1)

String work = ...;
String csvwork = work.replaceAll( "(?<=.)([FMTW])", ",$1" )

此处,(?<=.)是一个零宽度正向后视非捕获组:在匹配模式之后匹配的内容,即(?<=中的句点。 )。这是与all character class匹配的模式。因此,以下模式在任何字符之后锚定。第二部分([FMTW])捕获组,匹配由F,M,T或W之一组成的单个字符。因此,整个模式匹配任何F,M,T或W之后任何角色。 replaceAll的第二个参数定义了F / M / T / W的替换,它由逗号和(第一个也是唯一的)捕获组捕获的内容组成。