it-swarm-id.com

Hapus trailing koma dari string yang dipisahkan koma

Saya mendapat String dari database yang memiliki beberapa koma (,). Saya ingin menghapus koma terakhir tetapi saya tidak dapat menemukan cara sederhana untuk melakukannya.

Apa yang saya miliki: kushalhs, mayurvm, narendrabz,

Apa yang saya inginkan: kushalhs, mayurvm, narendrabz

40
Kushal Shah

Untuk menghapus bagian ", " yang segera diikuti oleh akhir string, Anda dapat melakukan:

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

Ini menangani daftar kosong (string kosong) dengan anggun, berlawanan dengan lastIndexOf/substring solusi yang memerlukan perlakuan khusus untuk kasus tersebut.

Kode contoh:

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

CATATAN: Karena telah ada beberapa komentar dan suntingan yang disarankan tentang bagian ", $": Ekspresi harus cocok dengan bagian trailing yang ingin Anda hapus.

  • Jika input Anda terlihat seperti "a,b,c,", gunakan ",$".
  • Jika input Anda terlihat seperti "a, b, c, ", gunakan ", $".
  • Jika input Anda terlihat seperti "a , b , c , ", gunakan " , $".

Saya pikir Anda mengerti maksudnya.

112
aioobe

Anda bisa menggunakan ini:

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

Gunakan Guava untuk menormalkan semua koma Anda. Pisahkan string di sekitar koma, buang kekosongan, dan hubungkan semuanya kembali. Dua panggilan. Tidak ada loop. Bekerja pertama kali:

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

}

Keluaran:

a, b, c, d, e
a, b, c, d, e
a, b, c, d, e
a, b, c, d, e
a, b, c, d, e

Secara pribadi, saya benci kesibukan dengan menghitung batas substring dan semua omong kosong itu.

6
Steve J

Selama lebih dari satu koma

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

Output: Halo, Dunia

3
Pandiarajan

Saya terlambat dalam utas ini tetapi berharap ini akan membantu bagi seseorang .......

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

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

Metode ini ada di kelas StringUtil BalusC. blognya

saya menggunakannya sangat sering dan akan memangkas string apa pun dari nilai apa pun:

/**
 * 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);
}

ex:

trim("1, 2, 3, ", ", ");
1
epoch
(^(\s*?\,+)+\s?)|(^\s+)|(\s+$)|((\s*?\,+)+\s?$)

Regexr

ex:

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   

menjadi:

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
1
IceWarrior353

Anda dapat melakukan sesuatu seperti menggunakan fungsi gabungan dari kelas String.

import Java.util.Arrays;
import Java.util.List;

public class Demo {

    public static void main(String[] args) {
        List<String> items = Arrays.asList("Java", "Ruby", "Python", "C++");
        String output = String.join(",", items);
        System.out.println(output);
    }

}
1
Rajesh Samson

Anda dapat mencoba ini, ini berhasil untuk saya:

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

Atau Anda dapat mencoba ini juga:

string = string.replaceAll(", $", "");
0
Tarit Ray
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;

}
0
blathur

Periksa apakah str.charAt(str.length() -1) == ','. Kemudian lakukan str = str.substring(0, str.length()-1)

0
Saurabh

Dan satu lagi ... ini juga membersihkan koma internal yang dicampur dengan spasi putih:

Dari , , , ,one,,, , ,two three, , , ,,four, , , , , ke one,two three, four

text.replaceAll("^(,|\\s)*|(,|\\s)*$", "").replaceAll("(\\,\\s*)+", ",");
0
    String str = "kushalhs , mayurvm , narendrabz ,";
    System.out.println(str.replaceAll(",([^,]*)$", "$1"));

saya membagikan kode dari proyek saya menggunakan ekspresi reguler yang dapat Anda lakukan ini ...

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);
    }
0
Hitesh Kushwah