我一直在尝试删除这样的粗体字符:
????? - New song
如您所见,是带有<b>
标签的粗体文本。
我曾经尝试过,假设角色可能是一种表情符号,但是我没有任何运气。
$regex_emoticons = '/[\x{1F600}-\x{1F64F}]/u';
$clear_string = preg_replace($regex_emoticons, '', $string);
$regex_symbols = '/[\x{1F300}-\x{1F5FF}]/u';
$clear_string = preg_replace($regex_symbols, '', $clear_string);
$regex_transport = '/[\x{1F680}-\x{1F6FF}]/u';
$clear_string = preg_replace($regex_transport, '', $clear_string);
$regex_misc = '/[\x{2600}-\x{26FF}]/u';
$clear_string = preg_replace($regex_misc, '', $clear_string);
$regex_dingbats = '/[\x{2700}-\x{27BF}]/u';
$clear_string = preg_replace($regex_dingbats, '', $clear_string);
如何将其删除或替换为不带粗体的正确字符? 任何想法都会被感动。
答案 0 :(得分:4)
这些字符属于Unicode void server::readyRead()
{
QTcpSocket *m_socket = static_cast<QTcpSocket*>(sender());
while(m_socket->bytesAvailable() > 0)
{
QByteArray buf = m_socket->readAll();
}
switch(buf):
case 1:
data = collectDatafromStream1();
m_socket->write(data); m_socket->flush();
case 2:
data = collectDatafromStream2();
m_socket->write(data); m_socket->flush();
case 3:
data = collectDatafromStream3();
m_socket->write(data); m_socket->flush();
//and so on.....
}
代码块
Mathematical
涵盖范围\p{Block=Mathematical_Alphanumeric_Symbols}
这些字符是类似字体的代码,例如粗体,斜体,脚本,斜体,斜体。
如果您想花一些时间匹配每种类型和范围,可以将它们映射为ASCII等效项。
我只会删除它们。
以下是块范围内的字符(严重缩写)
[\x{1D400}-\x{1D7FF}]
答案 1 :(得分:1)
最初,我认为这将是一个大写/小写问题。您可能会使用想要查找的适当unicode进行跟踪。
表达式的一个问题可能是
+
丢失了。
我的猜测是,也许此表达式可能有效:
([\x{0041}-\x{005A}]+)
如果所有内容都可能是大写,或者某些表达式类似于:
([\x{0041}-\x{005A}]{2,})
如果我们只想替换SONYA
而不是S O N Y A
。
如果您感兴趣,请在此demo中对表达式进行说明。
$re = '/([\x{0041}-\x{005A}]+)/u';
$str = 'SONYA';
$subst = '\\L$1';
$result = preg_replace($re, $subst, $str);
echo $result;