电报不会转义某些降价字符,例如:
这很好用
_test \ _test _
但是这个返回解析错误
*测试\ *试验*
我做错了什么?
答案 0 :(得分:5)
String escapedMsg = toEscapeMsg
.replace("_", "\\_")
.replace("*", "\\*")
.replace("[", "\\[")
.replace("`", "\\`");
不要逃避]
字符。如果[
被转义,]
将被视为普通字符。
答案 1 :(得分:2)
实际上两者都有错误
{
"ok": false,
"error_code": 400,
"description": "Bad Request: Can't parse message text: Can't find end of the entity starting at byte offset 11"
}
听起来像Telegram不支持转义字符用于降价,所以我建议你改用HTML:
<b>test*test</b>
答案 2 :(得分:1)
答案 3 :(得分:1)
您应该使用'\\'
来转义标记令牌*_[`
,即发送此代码:
*test\\*test*
答案 4 :(得分:-1)
pdenti的答案仅替换消息中找到的第一个字符。使用带有全局标记的正则表达式替换所有正则表达式。
String escapedMsg = toEscapeMsg
.replace(/_/g, "\\_")
.replace(/\*/g, "\\*")
.replace(/\[/g, "\\[")
.replace(/`/g, "\\`");