Tách dãy số từ chuỗi
Bài viết này sẽ giúp các bạn tách dãy số từ chuỗi. Ví dụ với chuỗi
"-1.223 %^& fsf 0.234 56.65 fsf 9 f"
Chúng ta sẽ tách được ra các số:
-1.223 0.234 56.65 9
Ở đây mình thực hiện thành công trên c và java, các ngôn ngữ khác chắc cũng có cách ;). Nói thêm là cách làm có sử dụng đến regex, bạn nào chưa rõ có thể đọc thêm về nó.
Trong C: thực chất cách này là mình tham khảo và phát triển từ bài How to extract numbers from string in c
#include <string.h> #include <stdlib.h> #include <stdio.h> int main(void) { // khong doc duoc str khi bat dau bang dau tru (-) char* str= "-1.223 %^& fsf 0.234 56.65 fsf 9 f"; // khai bao, cap phat bo nho them s de cong them vao dau 1 ky tu char* const s = (char*)malloc(sizeof(strlen(str))+1); // cong them ky tu a strcpy(s, "a"); strcpy(s + strlen(s), str); printf("%s\n",s); // tach lay cac so int total_n = 0; int n; float i; // cac so can tach printf("\nday cac so\n"); while (1 == sscanf(s + total_n, "%*[^0123456789-]%f%n", &i, &n)) { total_n += n; printf("%f\n", i); } return 0; }
Trong Java: Cách dễ dàng nhất là biến tẩt cả ký tự không phải số (ngoại trừ dấu âm, dấu chấm) rồi tách thành các phần tử như dưới đây:
public class ScanArrayNumFromString { public static void main(String[] args) { // chuoi ban dau String str = "-1.223 %^& fsf 0.234 56.65 fsf 9 f"; /** * thay the toan bo nhung ky tu khong phai so, khong phai dau am, khong * phai dau cham bang dau phay */ str = str.replaceAll("[^0-9,-\\.]", ","); /** cat thanh cac phan tu thong qua dau phay */ String[] item = str.split(","); // duyet cac phan tu, neu la so thi in ra for (int i = 0; i < item.length; i++) { try { Double.parseDouble(item[i]); System.out.println(item[i]); } catch (NumberFormatException e) { } } } }
Bài viết được thực hiện khi một bạn nào đó tối nay nhờ mình sửa bài về cái này trong c, tìm mãi mới thấy cách dùng.
Anh ui cho e hỏi hiện thực hóa pipe trên linux là sao vậy anh. nhóm em làm bài tiểu luận với đề tài là ” tìm hiểu về pipe, cài đặt 1 phần mềm trên hệ điều hành linux” nhưng thầy lại gợi ý như vậy.híc… tụi e k hỉu lắm….
mong a chỉ giúp với.
Cái này mình không rõ =)) chưa nghịch bao giờ, bạn thử search google với từ khóa
pipe trong linux
hoặc pipe in linux