您的位置:首页 > 汽车 > 新车 > 微博推广文案怎么写_网页游戏前十名就选新壹玩_企业网站建设多少钱_网推软件有哪些

微博推广文案怎么写_网页游戏前十名就选新壹玩_企业网站建设多少钱_网推软件有哪些

2025/4/30 3:00:40 来源:https://blog.csdn.net/weixin_42944928/article/details/147495800  浏览:    关键词:微博推广文案怎么写_网页游戏前十名就选新壹玩_企业网站建设多少钱_网推软件有哪些
微博推广文案怎么写_网页游戏前十名就选新壹玩_企业网站建设多少钱_网推软件有哪些

看下面图片

我想退格键时,把符号 ”●“ 销点,因为用户按退格键时,可能还要接着前一行继续再写,例如:

现在我要判断按退格键时前面有没有文字,是不是都是特殊字符和空格,或者控制字符,

以前写了很多的功能函数,感觉写不完,可能用字符串匹配可以,但是我很少用,令天突然

我想起写遍历函数的几篇文章,来了灵感,于是在字符串类中添加了一个函数:

/// <summary>
/// 
/// 如果所有字符满足funConditions,则返回 true
/// 
/// 函数原型:
///   bool funConditions(const T& ch) {		}
/// 写法:
///		isAllrules( [](const T& ch)->bool{ return ? } );
/// </summary>
/// <typeparam name="funConditions"></typeparam>
/// <param name="fun"></param>
/// <returns></returns>
/// 创建时间: 2025-04-25      最后一次修改时间: 2025-04-25  已测试( 2025-04-25)
template<class funConditions>
bool isAllRules(funConditions fun) {for (size_t i = 0; i < _nLength; ++i) {if (!fun(_pData[i]))return false;}return true;
}

然而在QTextEdit中的使用如下:

bool my_QTextEdit::default_do_keyPressEvent_KeyBackspace(QKeyEvent* event)
{/*auto s1 = m_currentLineText.getBook_序号标记();auto s2 = m_currentLineText.GetBook_序号标记2();auto s3 = m_currentLineText.getBook_特殊符号标记();auto s4 = m_currentLineText.getBook_章节标记();*///if(s1.length() == 0 && s2.length() == 0 && s2.length() == 0 && s3.length() == 0)QTextEdit::keyPressEvent(event);_string s = m_currentLineText.trim();if (s.length() < 2) {
#ifdef _D_//d.printInfo("m_currentLineText.trim() < 2", "bool my_QTextEdit::default_do_keyPressEvent_KeyBackspace(QKeyEvent * event)");
#endifthis->f_setCurrentCharFormat(m_headlineStyle.mainBody());}else if(s.length() < 3) {
#ifdef _D_//d.printInfo("m_currentLineText.trim() < 3", "bool my_QTextEdit::default_do_keyPressEvent_KeyBackspace(QKeyEvent * event)");
#endifthis->f_setCurrLineTextStyle(m_headlineStyle.mainBody());}bool bContainAnySpecial = false; //是否有特殊符号//全部是特殊符号或者是空格或者是控制字符if (m_currentLineText.isAllRules([&bContainAnySpecial,this](wchar_t& ch)->bool {if (gs.c_isControl(ch)) return true; //控制字符if (ch == ' ') return true;  //空格if (m_specificSymbol.indexOf(ch) != -1) {  //特殊字符ch = ' '; //用空格代替特殊符号bContainAnySpecial = true;return true;}return false;}) && bContainAnySpecial){g_setCurrentLineText(this, m_currentLineText + _t(" "));}return true;
}

这个函数很有技巧,很灵活:

编译器调用isAllRues时,先运行lambda表达式,而完成了lambda表达式之后,if语句中第二个参数bContainAnySpecial 也被设置了,还一个神奇的地方是,当查找到有特殊字符时,比如“●”,

会自动把 “●” 变成空格,即:

m_currentLineText =     "      ●  "  => "         "

函数isAllRules扩展性很好:

例如,你可以不断写功能函数:

全是控制字符

	_string s;s.isAllRules([](wchar_t& c) {if (::iscntrl(c))return true;});

全是数字,

全是空格

数字或空格

全是可打印字符

可打印字符或格

.......

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com