array - java string... args



從逗號分隔的字符串中刪除尾隨逗號 (11)

你可以使用'Java 8'做這樣的事情

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

}

我從數據庫中獲得了多個逗號( , )的字符串。 我想刪除最後一個逗號,但我真的找不到一個簡單的方法。

我有什麼: kushalhs, mayurvm, narendrabz,

我想要的是: kushalhs, mayurvm, narendrabz


Answer #1

你可以用這個:

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

Answer #2

使用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,,,,,"));
    }

}

輸出:

A,B,C,d,電子
A,B,C,d,電子
A,B,C,d,電子
A,B,C,d,電子
A,B,C,d,電子

就個人而言,我討厭計算子串的限制和所有廢話。


Answer #3

對於多個逗號

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

輸出:你好,世界


Answer #4

我正在使用正則表達式在我的項目中共享代碼,你可以這樣做...

String ChildBelowList = "";

    if (!Childbelow.isEmpty()) {
        for (int iCB = 0; iCB < Childbelow.size(); iCB++) {

            ChildBelowList = ChildBelowList += Childbelow.get(iCB) + ",";



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

        tv_childbelow.setText(ChildBelowList);

    } else {
        ll_childbelow.setVisibility(View.GONE);
    }

Answer #5

我遲到了這個帖子,但希望它會對某個人有所幫助.......

String abc = "kushalhs , mayurvm , narendrabz ,";

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

Answer #6

檢查str.charAt(str.length() -1) == ',' 。 然後做str = str.substring(0, str.length()-1)


Answer #7

要刪除緊跟字符串結尾的", "部分,您可以執行以下操作:

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 , " ,請使用" , $"

我認為你說對了。


Answer #8

還有一個......這也清除了與空白混合的內部逗號:

, , , ,one,,, , ,two three, , , ,,four, , , , , one,two three, four

text.replaceAll("^(,|\\s)*|(,|\\s)*$", "").replaceAll("(\\,\\s*)+", ",");

Answer #9
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;

}

Answer #10
(^(\s*?\,+)+\s?)|(^\s+)|(\s+$)|((\s*?\,+)+\s?$)

Regexr

例如:

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




string