Hỏi đáp

Chia sẻ kiến thức, cùng nhau phát triển

Xử lý chuỗi địa chỉ

16:48 05-06-2017 558 lượt xem 3 bình luận 23:00 08-06-2017

Mình đang viết phương thức xử lý chuỗi địa chỉ khi nhập vào. Chuỗi chỉ cho phép chữ,số, khoảng trắng và dấu phẩy. Mình xử lý gần hết các trường hợp rồi trừ 1 trường hợp nhập vào chuỗi có ", , , , , , , , , , " (dấu phẩy rồi cách) thì nó sẽ trả về ",,,,,,,,,,,,,,,,,," (chỉ cắt được dấu cách) mà không cắt mấy dấu phẩy thừa. Ai giúp mình hoàn thiện đoạn code này với. Mình cảm ơn ạ :3
/// Hiện tại mình đang giải quyết bằng gọi lại xulyChuoi(xulyChuoi(String s)) để nó xử lý lại cái ,,,,,,,,,,,,,,,,,,,, kia =)))))

 

private String xulyChuoi(String s) {
        for (;;) {
            if ((s.charAt(0) == ' ') || (s.charAt(0) == ',')) {
                s = s.substring(1);
            } else if ((s.charAt(s.length() - 1) == ' ') || (s.charAt(s.length() - 1) == ',')) {
                s = s.substring(0, s.length() - 1);
            } else {
                break;
            }
        }
        String temp = String.valueOf(s.charAt(0)).toUpperCase();
        for (int i = 1; i < s.length(); i++) {
            if (((s.charAt(i) == ' ') && (s.charAt(i + 1) == ' ')) || ((s.charAt(i) == ',') && (s.charAt(i + 1) == ','))) {
                s = s.substring(0, (i + 1)) + s.substring(i + 1);
            } else if ((s.charAt(i) == ' ') && (s.charAt(i + 1) == ',')) {
                s = s.substring(0, (i)) + s.substring(i);
            } else if ((s.charAt(i) != ' ') && (s.charAt(i - 1) == ' ')) {
                temp += String.valueOf(s.charAt(i)).toUpperCase();
            } else if ((s.charAt(i) != ',') && (s.charAt(i) != ' ') && (s.charAt(i - 1) == ',')) {
                temp += " " + String.valueOf(s.charAt(i)).toUpperCase();
            } else {
                temp += String.valueOf(s.charAt(i)).toLowerCase();
            }
        }
        return temp;
    }

 

Bình luận

Để bình luận, bạn cần đăng nhập bằng tài khoản Howkteam.

Đăng nhập
Nguyễn Nhật Nam đã bình luận 23:00 08-06-2017

Nếu đã làm vậy thì bạn đệ quy luôn đi, bạn viết 1 hàm bool kiểm tra xem chuỗi đã ok chưa, chưa thì gọi lại hàm xulyChuoi(s) đó

Trần Thành Vi Thanh Member đã bình luận 00:01 06-06-2017

Nếu là chuẩn hoá chuỗi bình thường thì bạn có thể tham khảo đoạn code sau:

public static String TrimKey(String value, char Key)
{
    int len = value.length();
    int st = 0;
    char[] val = value.toCharArray();    

    while ((st < len) && (val[st] == Key)) 
    {
        st++;
    }
    while ((st < len) && (val[len - 1] == Key)) 
    {
        len--;
    }

    if (st >= len)
    {
        return String.valueOf(Key);
    }

    return ((st > 0) || (len < value.length())) ? value.substring(st, len) : value;
}

public static void main(String[] args) 
{
        String Chuoi = " ,,,,,  ,,  ,   ,,,   ,,    ,,     ,, ";
        
        Chuoi = TrimKey(Chuoi, ' '); // cắt khoảng trắng đầu cuối
        Chuoi = TrimKey(Chuoi, ','); // cắt ký tự , đầu cuối
        
        do
        {
            Chuoi = Chuoi.replaceAll("  ", " "); // thay thế những chỗ có 2 khoảng trắng thành 1 khoảng trắng
        }
        while(Chuoi.indexOf("  ") != -1); // lặp cho đến khi hết 2 khoảng trắng liên tiếp

do
        {
            Chuoi = Chuoi.replaceAll(",,", ","); // tương tự
        }
        while(Chuoi.indexOf(",,") != -1); 
        
        System.out.println("Chuoi da chuan hoa:" + Chuoi + "");
    }

 

Trần Thành Vi Thanh Member đã bình luận 23:47 05-06-2017

Chưa hiểu hết ý bạn. Ví dụ chuổi "    ,,,,, ,,,,, ,,,, , , , ,,     " thì kết quả bạn mong muốn là gì.

Câu hỏi mới nhất