網(wǎng)站首頁 編程語言 正文
功能介紹
1、可檢測出英文內(nèi)容中某個單詞出現(xiàn)的次數(shù)
2、可從英文內(nèi)容中提取以某個字母為首的所有單詞
3、可將修改的內(nèi)容從新保存到txt文件中
源代碼
.pro文件
無增改
.h文件
#ifndef WIDGET_H #define WIDGET_H #include <QWidget> QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACE class Widget : public QWidget { Q_OBJECT public: Widget(QWidget *parent = nullptr); ~Widget(); QString aFilename;//添加部分 private slots: void on_openpushButton_clicked();//添加部分(無需手動添加) void on_savepushButton_clicked();//添加部分(無需手動添加) void on_numpushButton_clicked();//添加部分(無需手動添加) void on_wordpushButton_clicked();//添加部分(無需手動添加) private: Ui::Widget *ui; }; #endif // WIDGET_H
.cpp文件(不含main函數(shù)的那個)
#include "widget.h" #include "ui_widget.h" #include<QFileDialog> Widget::Widget(QWidget *parent) : QWidget(parent) , ui(new Ui::Widget) { ui->setupUi(this); ui->findtextEdit->setText("將檢索內(nèi)容復(fù)制于此!"); ui->resulttextEdit->setText("檢索結(jié)果顯示于此!"); } Widget::~Widget() { delete ui; } void Widget::on_openpushButton_clicked()//用來打開一個txt文本文件 { QString curpath=QDir::currentPath(); QString dlgTitle="打開一個文件"; QString filter="程序文件(*.h *.cpp);;文本文件(*.txt);;所有文件(*.*)"; aFilename=QFileDialog::getOpenFileName(this,dlgTitle,curpath,filter); QFile afile(aFilename); afile.open(QIODevice::ReadOnly|QIODevice::Text); ui->findtextEdit->setText(afile.readAll()); afile.close(); } void Widget::on_savepushButton_clicked()//用以保存txt文本文件 { QFile afile(aFilename); afile.open(QIODevice::WriteOnly|QIODevice::Text); QString str=ui->findtextEdit->toPlainText(); QByteArray strbyte=str.toUtf8(); afile.write(strbyte,strbyte.length()); afile.close(); } bool is_word(QString s)//用于判斷字符是否為英文字符 { QByteArray byte = s.toUtf8(); if((int(byte.at(0))>=65&&int(byte.at(0))<=90)||(int(byte.at(0))>=97&&int(byte.at(0))<=122)) { return true; } else { return false; } } bool delete_thesame(QString &word,QStringList &w_list)//相同的單詞將不進行二次存儲,保證檢索處來的每個單詞具有唯一性 { for(int i=0;i<w_list.size();i++) { if(w_list.at(i).compare(word,Qt::CaseInsensitive)==0) { return false; } } return true; } void get_word(int &index,QString &word,QStringList &w_list,QString &str)//將目標單詞單詞進行添加存儲 { while(index+1<=str.length()&&is_word(str.at(index))) { word+=str.at(index); index++; } if(delete_thesame(word,w_list)) { w_list.append(word); } word=""; } void Widget::on_numpushButton_clicked() { QString word=ui->wordlineEdit->text();//獲取內(nèi)容 int NUM=0; //初始化檢索單詞次數(shù)為0 QString text = ui->findtextEdit->toPlainText(); QStringList number_list = text.split("\n"); for (int i = 0; i < number_list.size(); ++i) { int is_ok=1;//若為0,則表明字符串中已經(jīng)沒有我們需要的單詞了 int index=-word.length(); QString str0=":"+number_list.at(i)+":";//“:”是為了方便后面的編程 while(is_ok) { index=str0.indexOf(word,word.length()+index);//這里需要去理解indexof函數(shù)的作用 if(index!=-1){ if(!is_word(str0.at(index+word.length()))&&!is_word(str0.at(index-1)))//判斷目標單詞是否為一個個體,即該單詞的首尾是否為非英文字符(上面“:”的作用體現(xiàn)于此) NUM++; } else { is_ok=0; } } } ui->numlineEdit->setText(QString::number(NUM,10)); } void Widget::on_wordpushButton_clicked() { int A_is_a; int index=0; //是否發(fā)現(xiàn)on_numpushButton_clicked()函數(shù)中也出現(xiàn)如下兩句 QString text = ui->findtextEdit->toPlainText(); QStringList word_list = text.split("\n"); //判斷yesradioButton和noradioButton按鈕是否被選中 if(ui->yesradioButton->isChecked()) A_is_a=1; if(ui->noradioButton->isChecked()) A_is_a=0; QString none=ui->alphabetlineEdit->text();//獲取內(nèi)容 QString word; QStringList w_list; for (int i = 0; i < word_list .size(); ++i) { QString str = word_list .at(i); index=0;//初始化檢索下標為0 while(index+1<=str.length()) { if((index==0||!is_word(str.at(index-1)))&&is_word(str.at(index)))//若該字符為英文,且其前面為非英文 { switch(A_is_a) { case 1: if(none.compare(str.at(index))==0) { get_word(index,word,w_list,str); } else { while(index+1<=str.length()&&is_word(str.at(index))) { index++; } } break; case 0: if(none.compare(str.at(index),Qt::CaseInsensitive)==0) { get_word(index,word,w_list,str); } else { while(index+1<=str.length()&&is_word(str.at(index))) { index++; } } break; default:break; } } else { index++; } } } ui->resulttextEdit->clear(); for(int i=0;i<w_list.count();i++) { ui->resulttextEdit->append(w_list.at(i)); } }
.ui文件
對應(yīng)程序中的自定義控件名稱如下:
findtextEdit:3
resulttextEdit:4
wordlineEdit:6
numlineEdit:9
alphabetlineEdit:5openpushButton:1
savepushButton:2
numpushButton:7
wordpushButton:8yesradioButton:是
noradioButton:否
Label控件僅僅在ui中修改標題內(nèi)容,程序中沒有其它操作,所以作者選擇默認系統(tǒng)給的名稱。
原文鏈接:https://blog.csdn.net/weixin_44672122/article/details/122550275
相關(guān)推薦
- 2022-07-12 windows版wsl docker desktop 安裝nginx
- 2023-01-15 解讀keras中的正則化(regularization)問題_python
- 2022-02-25 .gitignore 中增加了 .idea/ workspace.xml失效解決方案
- 2022-11-04 一文理解Redux及其工作原理_React
- 2022-09-26 Ajax異步請求的五個步驟及實戰(zhàn)案例_AJAX相關(guān)
- 2022-06-28 React18之狀態(tài)批處理的使用_React
- 2022-08-10 c#實現(xiàn)哈夫曼樹算法_C#教程
- 2023-03-03 PostgreSQL實時查看數(shù)據(jù)庫實例正在執(zhí)行的SQL語句實例詳解_PostgreSQL
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支