首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用blaze-html在html中创建不间断的前导空格?

如何使用blaze-html在html中创建不间断的前导空格?
EN

Stack Overflow用户
提问于 2013-01-11 14:07:54
回答 2查看 495关注 0票数 2

使用blaze-html包,我想创建一些如下所示的html

代码语言:javascript
复制
<p>&nbsp;&nbsp;Some indented text

我不知道如何创建不间断的空间。那么最好的方法是什么呢?

EN

回答 2

Stack Overflow用户

发布于 2013-01-11 14:30:40

当然,一种方法是将包含该字符的Haskell编码版本的字符串提供给toHtml。另一种方法是使用preEscapedToMarkup

代码语言:javascript
复制
preEscapedToMarkup "&nbsp;"
票数 1
EN

Stack Overflow用户

发布于 2013-01-12 14:44:25

根据ertes的建议,我尝试“给出一个包含字符的Haskell编码版本的字符串”。

代码语言:javascript
复制
{-# LANGUAGE OverloadedStrings #-}

-- * base
import Data.Monoid ((<>))
import Data.Char (chr)

-- * text
import qualified Data.Text.Lazy as L (Text)
import Data.Text (Text, singleton)
import Data.Text.Lazy.Read (hexadecimal)

-- * blaze-html
import Text.Blaze.Html5
import qualified Text.Blaze.Html5 as H
import Text.Blaze.Renderer.String


nbspHex = "00A0"               :: L.Text -- Unicode codepoint for nbsp
Right (nbspInt, _) = hexadecimal nbspHex
nbspChar = chr nbspInt         :: Char
nbspTxt  = singleton nbspChar  :: Text
nbspHtml = toHtml nbspTxt      :: Html

someHtml ::  Html
someHtml = docTypeHtml $
  body $ do
    p "some text"
    p (nbspHtml <> nbspHtml <> "some indented text")

main :: IO ()
main = do
  let s = renderHtml $ someHtml
  putStrLn s

正如我所希望的那样,这段代码在浏览器中显示了“一些缩进的文本”,但是查看html,我没有看到任何"@nbsp;",正如我所期望的。

感谢Jukka指出了更好的解决方案。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14272637

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档