从逗号分隔的string中删除尾随逗号

我从数据库中得到了多个逗号( , )的string。 我想删除最后一个逗号,但我不能find一个简单的方法来做到这一点。

我有什么: kushalhs, mayurvm, narendrabz,

我想要的: kushalhs, mayurvm, narendrabz

要删除紧跟在string末尾的", "部分,可以这样做:

 str = str.replaceAll(", $", ""); 

这将优雅地处理空列表(空string),而不是lastIndexOf / substring解决scheme,这需要对这种情况进行特殊处理。

示例代码:

 String str = "kushalhs, mayurvm, narendrabz, "; str = str.replaceAll(", $", ""); System.out.println(str); // prints "kushalhs, mayurvm, narendrabz" 

注意:由于有关于", $"部分的一些注释和build议编辑:expression式应该匹配您要删除的尾部。

  • 如果您的input看起来像"a,b,c," ,则使用",$"
  • 如果您的input看起来像"a, b, c, " ,则使用", $"
  • 如果您的input看起来像"a , b , c , " ,则使用" , $"

我认为你说对了。

你可以使用这个:

 String abc = "kushalhs , mayurvm , narendrabz ,"; String a = abc.substring(0, abc.lastIndexOf(",")); 

使用番石榴规范化所有的逗号。 将string分割成逗号,将空容器全部放回原处。 两个电话。 没有循环。 第一次作品:

 import com.google.common.base.Joiner; import com.google.common.base.Splitter; public class TestClass { Splitter splitter = Splitter.on(',').omitEmptyStrings().trimResults(); Joiner joiner = Joiner.on(',').skipNulls(); public String cleanUpCommas(String string) { return joiner.join(splitter.split(string)); } } public class TestMain { public static void main(String[] args) { TestClass testClass = new TestClass(); System.out.println(testClass.cleanUpCommas("a,b,c,d,e")); System.out.println(testClass.cleanUpCommas("a,b,c,d,e,,,,,")); System.out.println(testClass.cleanUpCommas("a,b,,, ,c,d, ,,e,,,,,")); System.out.println(testClass.cleanUpCommas("a,b,c,d, e,,,,,")); System.out.println(testClass.cleanUpCommas(",,, ,,,,a,b,c,d, e,,,,,")); } } 

输出:

A,B,C,d,电子
A,B,C,d,电子
A,B,C,d,电子
A,B,C,d,电子
A,B,C,d,电子

就我个人而言,我讨厌计算子串的限制以及所有这些废话。

我在这个线程晚了,但希望它会帮助一些…….

 String abc = "kushalhs , mayurvm , narendrabz ,"; if(abc.indexOf(",") != -1){ abc = abc.substring(0,abc.length() - 1); } 

对于多个逗号

  String names = "Hello,World,,,"; System.out.println(names.replaceAll("(,)*$", "")); 

输出:你好,世界

检查是否str.charAt(str.length() -1) == ',' 。 然后执行str = str.substring(0, str.length()-1)

这个方法在BalusC的StringUtil类中。 他的博客

我经常使用它,并将修剪任何值的任何string:

 /** * Trim the given string with the given trim value. * @param string The string to be trimmed. * @param trim The value to trim the given string off. * @return The trimmed string. */ public static String trim(String string, String trim) { if (string == null) { return null; } if (trim.length() == 0) { return string; } int start = 0; int end = string.length(); int length = trim.length(); while (start + length <= end && string.substring( start, start + length).equals(trim)) { start += length; } while (start + length <= end && string.substring( end - length, end).equals(trim)) { end -= length; } return string.substring(start, end); } 

例如:

 trim("1, 2, 3, ", ", "); 
  String str = "kushalhs , mayurvm , narendrabz ,"; System.out.println(str.replaceAll(",([^,]*)$", "$1")); 

你可以试试这个,它为我工作:

 if (names.endsWith(",")) { names = names.substring(0, names.length() - 1); } 

或者你也可以试试这个:

 string = string.replaceAll(", $", ""); 
 (^(\s*?\,+)+\s?)|(^\s+)|(\s+$)|((\s*?\,+)+\s?$) 

Regexr

例如:

 a, b, c , ,a, b, c, ,a, b, c , ,,a, b, c, ,,, , a, b, c, , a, b, ca, b, c ,, , a, b, c, , ,a, b, c, , , a, b, c , ,,, a, b, c,,, ,,, ,,,a, b, c,,, ,,, ,,, ,,, a, b, c,,, ,,, ,,,a, b, c ,,, ,,,a, b, c,,, a, b, c 

变为:

 a, b, c a, b, c a, b, c a, b, c a, b, c a, b, c a, b, c a, b, c a, b, c a, b, c a, b, c a, b, c a, b, c a, b, c a, b, c a, b, c 
 public static String removeExtraCommas(String entry) { if(entry==null) return null; String ret=""; entry=entry.replaceAll("\\s",""); String arr[]=entry.split(","); boolean start=true; for(String str:arr) { if(!"".equalsIgnoreCase(str)) { if(start) { ret=str; start=false; } else { ret=ret+","+str; } } } return ret; } 

你可以使用“Java 8”

 private static void appendNamesWithComma() { List<String> namesList = Arrays.asList("test1", "tester2", "testers3", "t4"); System.out.println(namesList.stream() .collect(Collectors.joining(", "))); }