因 ChatGPT 同樣的問題每次的回答都不一樣,這次的作法覺得不錯,所以在這留一份。
對於詠唱詞我個人覺得,那是給 AI 看的不是給人看,意思是人是不是看得懂或是否覺得優美不重要,但若能兩者兼具那也很好,當作是詠唱詞與註解的結合
問:
請用 c++ 寫一個函數,可以找出字串中含有正則表達式用到的特殊字元,在其前頭加上 '/' 字,再將處理完的字串傳回
答: 以下是一個簡單的 C++ 函數,可以找出字串中含有正則表達式用到的特殊字元,在其前頭加上 '/' 字,然後將處理完的字串傳回。
- #include <iostream>
- #include <string>
- std::string addSlashesToRegex(std::string str) {
- std::string specialChars = ".^$*+?()[{\\|";
- std::string result = "";
- for (int i = 0; i < str.length(); i++) {
- if (specialChars.find(str[i]) != std::string::npos) {
- result += "\\";
- }
- result += str[i];
- }
- return result;
- }
- int main() {
- std::string regex = "a.b^c$d*e+f?g(h{i|j})[k]l\\m|n";
- std::cout << addSlashesToRegex(regex) << std::endl;
- return 0;
- }
▲我打錯了 '/',ChatGPT 夠聰明自動改正
問: 請再寫個函數,還原 addSlashesToRegex() 處理過的字元
答:
以下是一個 C++ 函數,可以將經過 addSlashesToRegex()
處理過的字元還原成原始字元:
#include <iostream> #include <string> std::string removeSlashesFromRegex(std::string str) { std::string result = ""; for (int i = 0; i < str.length(); i++) { if (str[i] == '\\' && i < str.length() - 1) { result += str[++i]; } else { result += str[i]; } } return result; } int main() { std::string regex = "a\\.b\\^c\\$d\\*e\\+f\\?g\\(h\\{i\\|j\\}\\)\\[k\\]l\\\\m\\|n"; std::cout << removeSlashesFromRegex(regex) << std::endl; return 0; }
沒有留言:
張貼留言