Я получил строку из базы данных с несколькими запятыми (,
). Я хочу удалить последнюю запятую, но я не могу найти простой способ сделать это.
Что у меня: kushalhs, mayurvm, narendrabz,
Что я хочу: kushalhs, mayurvm, narendrabz
Я получил строку из базы данных с несколькими запятыми (,
). Я хочу удалить последнюю запятую, но я не могу найти простой способ сделать это.
Что у меня: kushalhs, mayurvm, narendrabz,
Что я хочу: kushalhs, mayurvm, narendrabz
Чтобы удалить часть ", "
, за которой сразу следует конец строки, вы можете сделать:
str = str.replaceAll(", $", "");
Это корректно обрабатывает пустой список (пустую строку), а не решения lastIndexOf
/substring
, требующие особой обработки такого случая.
Пример кода:
String str = "kushalhs, mayurvm, narendrabz, ";
str = str.replaceAll(", $", "");
System.out.println(str); // prints "kushalhs, mayurvm, narendrabz"
ПРИМЕЧАНИЕ.. Поскольку некоторые комментарии и предложения были внесены в часть ", $"
: выражение должно соответствовать конечной части, которую вы хотите удалить.
"a,b,c,"
, используйте ",$"
."a, b, c, "
, используйте ", $"
."a , b , c , "
, используйте " , $"
.Я думаю, вы поняли.
Вы можете использовать это:
String abc = "kushalhs , mayurvm , narendrabz ,";
String a = abc.substring(0, abc.lastIndexOf(","));
Используйте Guava для нормализации всех ваших запятых. Разделите цепочку вокруг запятых, выбросьте пустые контейнеры и соедините все это вместе. Два звонка. Нет циклов. Работает в первый раз:
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,,,,,"));
}
}
Вывод:
а, б, в, г, д
а, б, в, г, д
а, б, в, г, д
а, б, в, г, д
а, б, в, г, д
Лично я ненавижу фьюзинг с подсчетом пределов подстрок и всей этой ерунды.
Я опаздываю на эту тему, но надеюсь, что это поможет кому-то.......
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("(,)*$", ""));
Вывод: Hello, World
Проверьте,
str.charAt(str.length() -1) == ','
.
Тогда сделайте
str = str.substring(0, str.length()-1)
Этот метод находится в классе BalusC StringUtil. его блог
Я использую его очень часто и обрезаю любую строку любого значения:
/**
* 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?$)
Пример:
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
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(", ")));
}