провести круглый прямоугольник с закругленными углами слева
private void drawRoundRect(float left, float top, float right, float bottom, Paint paint, Canvas canvas) {
Path path = new Path();
path.moveTo(left, top);
path.lineTo(right, top);
path.lineTo(right, bottom);
path.lineTo(left + radius, bottom);
path.quadTo(left, bottom, left, bottom - radius);
path.lineTo(left, top + radius);
path.quadTo(left, top, left + radius, top);
canvas.drawPath(path, onlinePaint);
}
Если вы хотите выполнить сопоставление шаблонов по номерам, способ сделать это в mongo - использовать выражение $ where и передать совпадение шаблона.
> db.test.find({ $where: "/^123.*/.test(this.example)" })
{ "_id" : ObjectId("4bfc3187fec861325f34b132"), "example" : 1234 }
Я не большой поклонник использования оператора запроса $where
из-за того, как он оценивает выражение запроса и риск безопасности, если запрос использует пользовательские входные данные.
Как сказано, лучший способ сделать это - $project
ваш документ и добавить другое вычисленное поле, которое является строковым значением вашего номера.
Операторы $toLower
и его sibling $toUpper
соответственно преобразуют строку в строчную и прописную, но имеют немного неизвестную функцию, они могут использоваться для преобразования целого в строку.
Оператор $match
возвращает все те документы, которые соответствуют вашему шаблону, с помощью оператора $regex
.
db.seDemo.aggregate(
[
{ "$project": {
"stringifyExample": { "$toLower": "$example" },
"example": 1
}},
{ "$match": { "stringifyExample": /^123.*/ } }
]
)
, который дает:
{
"_id" : ObjectId("579c668c1c52188b56a235b7"),
"example" : 1234,
"stringifyExample" : "1234"
}
{
"_id" : ObjectId("579c66971c52188b56a235b9"),
"example" : 12334,
"stringifyExample" : "12334"
}
Теперь, если вы хотите получить весь документ, который содержит определенную подстроку, более простой и лучший способ сделать это в предстоящем выпуске MongoDB (начиная с этой записи) с использованием оператора $redact
, который позволяет обрабатывать логическую $cond
. $indexOfCP
.
db.seDemo.aggregate([
{ "$redact": {
"$cond": [
{ "$gt": [
{ "$indexOfCP": [
{ "$toLower": "$example" },
"123"
] },
-1
] },
"$$KEEP",
"$$PRUNE"
]
}}
])
, который производит:
{
"_id" : ObjectId("579c668c1c52188b56a235b7"),
"example" : 1234
}
{
"_id" : ObjectId("579c66971c52188b56a235b9"),
"example" : 12334
}