Lời nói đầu
Trong đánh dấu Stack Exchange, chúng tôi sử dụng ** để in đậm văn bản. Ví dụ: đánh dấu này:
The **quick brown fox jumps over the lazy** dog.
Hiển thị như:
Con cáo nâu nhanh nhẹn nhảy qua con chó lười .
Tất nhiên, chúng tôi sử dụng ** để đóng táo bạo là tốt. Vì vậy, ít câu trả lời sẽ được in đậm. Ví dụ:
The **quick** brown fox jumps over the **lazy** dog.
Hiển thị như:
Con cáo nâu nhanh nhẹn nhảy qua con chó lười .
Tuy nhiên, nếu độ đậm không được đóng, nó hiển thị là không đậm :
The **quick brown fox jumps over the lazy dog.
Hiển thị như:
The quick brown fox jumps over the lazy dog.
Nếu văn bản có dấu gạch chéo ngược đơn \
, thì độ đậm không có hiệu lực:
The \**quick brown fox jumps over the lazy dog.**
Hiển thị như:
The quick brown fox jumps over the lazy dog.**
Trailing trắng kết quả trong văn bản không được bán (lưu ý, khoảng trắng sau màu nâu là một tab duy nhất):
The** quick** brown fox jumps over the lazy dog.**
Hiển thị như:
The quick brown fox jumps over the lazy dog.**
Chúng ta cũng có thể sử dụng __ cho đậm, nhưng lưu ý rằng mỗi lần chỉ có thể hoạt động. Đây là một ví dụ phức tạp hơn:
The __quick**__ brown **fox__ jumps** over__ the__ lazy **dog.
Hiển thị như:
Con cáo nâu ** nhanh chóng nhảy qua _ con chó lười biếng **.
Câu hỏi:
Bạn có thể viết một chương trình hoặc chức năng, được đưa ra văn bản ASCII hoặc là một String
tham số hoặc trên STDIN, nơi chỉ ký tự đặc biệt là **
, __
, \
(ví thoát) và dấu khoảng trắng, xác định có bao nhiêu ký tự in đậm có. Giá trị này phải được in thành STDOUT hoặc trả về từ hàm của bạn. Bạn không cần phải hỗ trợ các chuỗi rất dài; Độ dài chuỗi được đảm bảo không quá 30K
, đó là giới hạn cho bài đăng Stack Exchange.
Bản in đẹp:
- Tôi có thể ném ngoại lệ / lỗi khác cho một trường hợp và trả lại bình thường cho trường hợp khác không?
- Không. Nó phải là giá trị trả lại rõ ràng, không mơ hồ, không bị lỗi cho cả hai trường hợp. Đầu ra STDERR sẽ bị bỏ qua.
- Là khoảng trắng ở giữa các từ được coi là đậm?
- Đúng.
**quick brown**
có 11 ký tự in đậm trong đó.
- Đúng.
- Nếu
\
trong\**
, nếu in đậm, nên được tính?- Không. Nó hiển thị là **, vì vậy nếu được in đậm, nó sẽ chỉ có 2 ký tự.
- Hãy hoàn toàn rõ ràng: bạn có ý nghĩa gì với bao nhiêu nhân vật?
- Tổng số ký tự sẽ được in đậm. Điều này có nghĩa
**
là không được hiển thị nếu nó chuyển đổi văn bản, nhưng nó được hiển thị nếu không. - Lưu ý rằng có
**
thể in đậm theo nhiều cách, ví dụ:**\****
> ** . - Đừng xem xét khả năng một số văn bản có thể được chuyển đổi thành chữ nghiêng. Các chỉ quy tắc markdown để xem xét là ** = bold *.
- Tổng số ký tự sẽ được in đậm. Điều này có nghĩa
- Trên Stack Exchange, HTML Bold cũng hoạt động. tức là <b> </ b>
- Vâng, tôi biết. Đừng xem xét trường hợp này, đây là văn bản bình thường.
- Những gì về HTML lôi kéo? ví dụ:
<
><
- Đây cũng nên được coi là văn bản bình thường, không có chuyển đổi thực thể HTML.
- Tôi đã nghĩ về một ví dụ bạn không bao gồm ở trên!
- Hàm quy tắc hoạt động chính xác như thể văn bản đã được đăng trên Stack Exchange, trong một câu trả lời (không phải bình luận), ngoại trừ các khối mã không được coi là ký tự đặc biệt . Cả bốn loại không gian và loại backtick. Nếu bạn không chắc chắn về cách hiển thị văn bản, chỉ cần ném nó vào hộp trả lời ở đâu đó dưới dạng thử nghiệm, đó là những quy tắc bạn nên tuân theo.
Ví dụ:
Đầu vào:
The **quick brown fox jumps over the lazy** dog.
Đầu ra:
35
Đầu vào:
The **quick brown fox jumps over the lazy dog.
Đầu ra:
0
Đầu vào:
The __quick**__ brown **fox__ jumps** over__ the__ lazy **dog.
Đầu ra:
18
Đầu vào:
The __quick\____ brown fox **jumps over\** the** lazy \**dog.
Đầu ra:
23
Đầu vào:
The****quick brown fox****jumps over **the****lazy** dog.
Đầu ra:
11
Lỗ hổng tiêu chuẩn bị cấm.
**fox__ jumps**
chấm dứt sự va chạm cụ thể đó.
\**
hoặc \__
là các chuỗi thoát ba ký tự, nhưng trong StackExchange chỉ có các chuỗi thoát hai ký tự \*
hoặc \_
. Vì vậy, \***a**
tạo ra một dấu sao theo sau là một đậm a
. Ngoài ra còn có một lối thoát khác \\
. Chúng ta có nên xử lý cái đó không?
18
chính xác cho trường hợp thử nghiệm thứ ba?