Xóa khoảng trắng trong chuỗi C++

Hướng dẫn cách xóa khoảng trắng trong chuỗi C++. Bạn sẽ học được cách xóa khoảng trắng đầu và cuối chuỗi cũng như cách xóa toàn bộ ký tự trắng trắng trong chuỗi C++ sau bài học này.

Xóa toàn bộ ký tự trắng trong chuỗi C++

Trong C++ thì các ký tự trắng được tạo ra bởi dấu cách , tab hoặc là ký tự xuống dòng. Nếu bạn muốn loại bỏ toàn bộ các ký tự trắng này khỏi một chuỗi, thì cách làm dưới đây có lẽ là nhanh và đơn giản nhất.

Ý tưởng ở đây là chúng ta tạo ra một vòng lặp, sau đó kiểm tra từng ký tự trong chuỗi ban đầu và so sánh nó với ký tự trắng. Nếu ký tự đó không phải là khoảng trắng thì chúng ta sẽ lấy nó ra và lưu vào kết quả.

Chúng ta viết hàm xóa khoảng trắng trong chuỗi C++ như sau:



using

namespace

std

;


char

*

delete_space

(

char

*str,

char

*result) {

int

pos =

0

;


const

int

len =

strlen

(str);

for

(

int

i =

0

; i < len; i++) {

char

chr = str[i];



if

(chr ==

'\r'

|| chr ==

'\n'

|| chr ==

' '

) {

continue

;

}




result[pos++] = chr;


}


return

result;

}



int

main

()

{

char

str[] =

" Hello World "

;

cout

<<

"before: ["

<< str<<

"]\n"

;

char

result[

100

];

cout

<<

"after : ["

<< delete_space(str,result)<<

"]\n"

;

}


Kết quả:

before: [ Hello World ]


after : [HelloWorld]


Trên đây chúng ta đã sử dụng vòng lặp for để lấy từng ký tự, hàm strlen() để lấy độ dài chuỗi ban đầu, và lệnh if với toán tử logic để kiểm tra ký tự. Chi tiết về các kiến thức này hãy tham khảo dưới đây:

Xóa khoảng trắng đầu và cuối chuỗi C++

Nếu bạn không muốn xóa toàn bộ khoảng trắng, mà chỉ muốn xóa khoảng trắng thừa trong chuỗi C++ ở vị trí đầu và cuối chuỗi ban đầu, hãy tham khảo cách mà Kiyoshi trình bày dưới đây.

Trong ngôn ngữ C++ không tồn tại hàm có sẵn nào trong thư viện chuẩn giúp chúng ta xóa ký tự trắng trong chuỗi C++ cả. Do đó chúng ta sẽ phải tự tạo hàm để giải quyết vấn đề này.

Ý tưởng ở đây là chúng ta sử dụng hàm isspace() trong vòng lặp để kiểm tra lần lượt các ký tự trong chuỗi ban đầu có phải là ký tự trắng hay không. Nếu là ký tự trắng thì sẽ tiến hành xóa nó.

Chúng ta viết hàm xóa khoảng trắng trong chuỗi C++ như dưới đây. Lưu ý trong hàm chúng ta thực hiện 2 lần vòng lặp, một là để xóa ký tự trắng từ đầu chuỗi, và một là để xóa ký tự trắng từ cuối chuỗi.





using

namespace

std

;



char

*

trimString

(

char

*str){

char

*end;



while

(

isspace

((

unsigned

char

)*str)) str++;



if

(*str ==

0

)

return

str;




end = str +

strlen

(str) -

1

;


while

(end > str &&

isspace

((

unsigned

char

)*end)) end--;


end[

1

] =

'\0'

;


return

str;

}



int

main

()

{

const

char

*str1 =

" Hello World "

;

cout

<<

"Before:["

<< str1 <<

"]\n"

;





char

*tmp = strdup(str1);

cout

<<

"After :["

<<trimString(tmp) <<

"]"

;



free

(tmp);

exit

(EXIT_SUCCESS);

}


Kết quả:

Before:[ Hello World ]


After :[Hello World]


Tổng kết

Trên đây Kiyoshi đã hướng dẫn bạn cách xóa khoảng trắng trong chuỗi C++ rồi. Để nắm rõ nội dung bài học hơn, bạn hãy thực hành viết lại các ví dụ của ngày hôm nay nhé.

Và hãy cùng tìm hiểu những kiến thức sâu hơn về C++ trong các bài học tiếp theo