使用JAVA组织/操作字符串

时间:2014-09-30 14:42:36

标签: java

我正在填充一个带有单词和逗号的字符串,我想要删除最后一个逗号,以及我想用它替换之前的逗号。

例如:

 now -> "john,mary,paul,bla,etc,"
 what i want -> "john,mary,paul,bla and etc"

我想知道最好的方法,有人可以帮忙吗?

3 个答案:

答案 0 :(得分:0)

这是解决方案之一:

StringBuilder strBuilder = new StringBuilder("john,mary,paul,bla,etc,");

int prevIndex = strBuilder.indexOf("etc");

strBuilder.replace(prevIndex-1, prevIndex, " and ");

int nextIndex = strBuilder.indexOf("etc");

strBuilder.replace(nextIndex+3, nextIndex+4, ".");

System.out.println("Result: "+strBuilder.toString());

答案 1 :(得分:0)

这是一个更简洁,更通用的方法:

String str = "john,mary,paul,bla,etc,";

String[] splitStr = str.split(",");
String[] arrayWithAllExceptLast = java.util.Arrays.copyOfRange(splitStr, 0, splitStr.length - 1);
String last = splitStr[splitStr.length - 1];
String finalString = org.apache.commons.lang3.StringUtils.join(arrayWithAllExceptLast, ",") + " and " + last;

当然,你需要apache commons这样做,但是每个人都应该在他们的工具箱中拥有apache commons,这是必不可少的。

答案 2 :(得分:0)

我就是这样做的:

str = str.replaceAll(",$", "").replaceAll(",([^,]+)$", " and $1");

第一个replaceAll只是用空字符串替换最后一个字符(如果它是逗号)。 (正则表达式中的$表示"匹配输入字符串的结尾")。现在最后一个逗号消失了,第二个replaceAll将在字符串末尾查找一组非逗号字符后面的最后一个逗号;它将非commma字符视为一个组。然后整个字符串被" and "替换,后跟替换表达式中的非逗号字符组($1)。

一个略有不同的正则表达式:

str = str.replaceAll(",$", "").replaceAll(",(?=[^,]+$)", " and ");

在这种情况下,第二个正则表达式具有前瞻性。所以它会查找一个逗号,后跟一系列非逗号字符,后跟字符串的结尾;但是,前瞻部分中的文本不被认为是匹配字符串的一部分,因此不会被替换。因此,只需将","替换为" and "即可。