从逗号分隔的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(", "))); }