C++ Check If String Contains Special Characters

6 min read Jul 01, 2024
C++ Check If String Contains Special Characters

C++: Cara Mengecek Apakah String Mengandung Karakter Khusus

Dalam pemrograman C++, terkadang kita perlu mengecek apakah sebuah string mengandung karakter khusus. Karakter khusus biasanya didefinisikan sebagai karakter yang bukan huruf (A-Z, a-z) atau angka (0-9).

Berikut beberapa metode yang dapat digunakan untuk memeriksa apakah sebuah string mengandung karakter khusus:

1. Menggunakan Perulangan dan isalnum()

Metode ini merupakan cara yang sederhana dan mudah dipahami.

Kode:

#include 
#include 
#include 

using namespace std;

bool containsSpecialChars(const string& str) {
  for (char c : str) {
    if (!isalnum(c) && !isspace(c)) { // cek jika karakter bukan huruf, angka, atau spasi
      return true; // string mengandung karakter khusus
    }
  }
  return false; // string tidak mengandung karakter khusus
}

int main() {
  string str1 = "Hello World";
  string str2 = "Hello! World";

  if (containsSpecialChars(str1)) {
    cout << "String 1 mengandung karakter khusus." << endl;
  } else {
    cout << "String 1 tidak mengandung karakter khusus." << endl;
  }

  if (containsSpecialChars(str2)) {
    cout << "String 2 mengandung karakter khusus." << endl;
  } else {
    cout << "String 2 tidak mengandung karakter khusus." << endl;
  }

  return 0;
}

Penjelasan:

  • Fungsi containsSpecialChars() menerima string sebagai input.
  • Perulangan for digunakan untuk memeriksa setiap karakter dalam string.
  • Fungsi isalnum() mengembalikan true jika karakter adalah huruf atau angka, dan false jika bukan.
  • Fungsi isspace() mengembalikan true jika karakter adalah spasi, dan false jika bukan.
  • Jika karakter bukan huruf, angka, atau spasi, maka fungsi mengembalikan true (string mengandung karakter khusus).
  • Jika semua karakter adalah huruf, angka, atau spasi, maka fungsi mengembalikan false (string tidak mengandung karakter khusus).

2. Menggunakan Regex (Regular Expressions)

Metode ini lebih fleksibel dan dapat digunakan untuk mencocokkan pola karakter yang lebih kompleks.

Kode:

#include 
#include 
#include 

using namespace std;

bool containsSpecialChars(const string& str) {
  regex pattern("[^a-zA-Z0-9 ]"); // pola regex untuk mencocokkan karakter khusus
  return regex_search(str, pattern);
}

int main() {
  string str1 = "Hello World";
  string str2 = "Hello! World";

  if (containsSpecialChars(str1)) {
    cout << "String 1 mengandung karakter khusus." << endl;
  } else {
    cout << "String 1 tidak mengandung karakter khusus." << endl;
  }

  if (containsSpecialChars(str2)) {
    cout << "String 2 mengandung karakter khusus." << endl;
  } else {
    cout << "String 2 tidak mengandung karakter khusus." << endl;
  }

  return 0;
}

Penjelasan:

  • Fungsi containsSpecialChars() menerima string sebagai input.
  • Pola regex [^a-zA-Z0-9 ] mencocokkan semua karakter yang bukan huruf (a-z, A-Z), angka (0-9), atau spasi.
  • Fungsi regex_search() mengembalikan true jika string cocok dengan pola regex, dan false jika tidak.

3. Menggunakan find_first_not_of()

Metode ini dapat digunakan untuk mencari karakter pertama yang tidak termasuk dalam set karakter tertentu.

Kode:

#include 
#include 

using namespace std;

bool containsSpecialChars(const string& str) {
  return str.find_first_not_of("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 ") != string::npos;
}

int main() {
  string str1 = "Hello World";
  string str2 = "Hello! World";

  if (containsSpecialChars(str1)) {
    cout << "String 1 mengandung karakter khusus." << endl;
  } else {
    cout << "String 1 tidak mengandung karakter khusus." << endl;
  }

  if (containsSpecialChars(str2)) {
    cout << "String 2 mengandung karakter khusus." << endl;
  } else {
    cout << "String 2 tidak mengandung karakter khusus." << endl;
  }

  return 0;
}

Penjelasan:

  • Fungsi containsSpecialChars() menerima string sebagai input.
  • Fungsi find_first_not_of() mencari karakter pertama yang tidak termasuk dalam set karakter yang diberikan ("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 ").
  • Jika fungsi mengembalikan string::npos, maka string tidak mengandung karakter khusus.
  • Jika fungsi mengembalikan nilai lain, maka string mengandung karakter khusus.

Kesimpulan

Anda dapat memilih metode yang paling sesuai dengan kebutuhan Anda. Metode perulangan dan isalnum() cocok untuk implementasi sederhana. Metode regex lebih fleksibel dan dapat digunakan untuk pola karakter yang lebih kompleks. Metode find_first_not_of() lebih ringkas dan dapat digunakan untuk memeriksa karakter yang tidak termasuk dalam set karakter tertentu.

Featured Posts