Biểu thức chính quy sau khớp với tất cả các ký tự đặc biệt, tức là tất cả ký tự trừ chữ cái tiếng Anh, khoảng trắng và chữ số:
"[^a-zA-Z0-9\\s+]"
Để di chuyển tất cả ký tự đặc biệt về cuối dòng đã cho, khớp tất cả ký tự đặc biệt bằng regex này, nối chúng vào một chuỗi rỗng và nối các ký tự còn lại vào một chuỗi khác, cuối cùng nối hai chuỗi này.
Ví dụ 1: Lặp ký tự thủ công
public class RemovingSpecialCharacters {
public static void main(String args[]) {
String input = "sample # text * with & special@ characters";
String regex = "[^a-zA-Z0-9\\s+]";
String specialChars = "";
String inputData = "";
for (int i = 0; i < input.length(); i++) {
char ch = input.charAt(i);
if (String.valueOf(ch).matches(regex)) {
specialChars = specialChars + ch;
} else {
inputData = inputData + ch;
}
}
System.out.println("Kết quả: " + inputData + specialChars);
}
}
Kết quả
Kết quả: sample text with special characters#*&@
Ví dụ 2: Sử dụng Matcher.appendReplacement()
Chương trình Java sau di chuyển các ký tự đặc biệt của chuỗi về cuối nó bằng các phương thức của gói Regex.
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Test {
public static void main(String args[]) {
String input = "sample # text * with & special@ characters";
String regex = "[^a-zA-Z0-9\\s+]";
String specialChars = "";
System.out.println("Chuỗi đầu vào: \n" + input);
// Tạo đối tượng Pattern
Pattern pattern = Pattern.compile(regex);
// Khớp pattern đã biên dịch trong chuỗi
Matcher matcher = pattern.matcher(input);
// Tạo StringBuffer rỗng
StringBuffer sb = new StringBuffer();
while (matcher.find()) {
specialChars = specialChars + matcher.group();
matcher.appendReplacement(sb, "");
}
matcher.appendTail(sb);
System.out.println("Kết quả: \n" + sb.toString() + specialChars);
}
}
Kết quả
Chuỗi đầu vào: sample # text * with & special@ characters Kết quả: sample text with special characters#*&@