Hỏi cách phân tích chuỗi thành mảng các ký tự trong java

Các bác cho em hỏi bấy h e có 1 chỗi 354dfgd5SDdsfF*(&3 e muốn tách tất cả các cái này thành mỗi mảng chứa số chữ và dấu thì làm thế nào hả các bác sử dụng JAVA ạ

String g = "line";
char c = g.charAt(0);  // returns 'l'
char[] c_arr = g.toCharArray(); // returns a length 4 char array ['l','i','n','e']

sau đó dùng hàm For duyệt mảng -> Kiểm tra

nhưng mà tách như thế này thì 67a5a56 nó tách thành 6,5,a,5,a,5,6 nhưng e muốn tách thành 65,a,5,a,56

vì phân tích xong còn phải kt số có chẵn lẻ , và nguyên tố nữa

Mình thì chuyên C# nên ý tưởng mình như thế này…

Bạn dùng vòng For sau đó tìm trong chuỗi tại vị trí nào xuất hiện kí tự -> sau đó cắt

http://v1study.com/java-ham-xu-ly-chuoi-string-a577.html

Thử dùng CharAt + Substring

    String str = "354dfgd5SDdsfF*(&3";
    String rs[] = str.split("(?<=\\D)(?=\\d)|(?<=\\d)(?=\\D)");
    for(String a : rs){
    	System.out.println(a);
    }

Hoặc

   private List<String> Parse(String str) {
        List<String> output = new ArrayList<String>();
        Matcher match = Pattern.compile("[0-9]+|[a-z]+|[A-Z]+").matcher(str);
        while (match.find()) {
           output.add(match.group());
         }
        return output;
   }
  
  Main(){
         ArrayList<String> listStr = Parse("354dfgd5SDdsfF*(&3");
         for(String rs : listStr){
    	      System.out.println(rs);
         }
  }
2 Likes

bác ơi cho em hỏi bây h , e muốn tách thêm kí tự đặc biệt regex là gì ạ

Quy luật là gì? Ký tự đặc biệt như nào?

1 Like

nếu không tách số xong tách thêm chữ hoa và chữ thường , e tách lần nữa cho chạy vòng for thì nó chỉ add đc 1 lần thôi

Đã tách được hết như trên rồi thì em muốn làm gì chả được. Xử lý với kết quả em tách ra đó

1 Like

Xin lỗi đã đào mộ bác Quân một chút, nếu trong chuỗi (do người dùng nhập vào có ký tự đặc biệt kiểu nháy kép " ) thì trong hàm split phải viết như nào để cắt được cả nháy kép đấy ạ?

Dùng String[] cut = str.split("\""); nhé bạn :slight_smile:

2 Likes

Cảm ơn bạn nhé!. Cho mình hỏi thêm chút nữa, nếu mình muốn split tất cả ký tự đặc biệt, kiểu như: !@#$%^^&I)"… thì mình phải liệt kê hết ra trong hàm split à?

Thế thì lọc thủ công đi, cái nào không phải chữ hay số thì là ký tự đặc biệt :slight_smile:

Thanks bạn nhé!, mình vừa tìm được cái biểu thức chính quy, sử dụng Pattern.compile để lọc.

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?