You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Dart中将含MathJax公式的字符串转为原始字符串?

问题描述

我有一段包含MathJax公式的HTML代码,公式里的反斜杠必须保留才能让MathJax正常渲染,但Dart会把反斜杠识别为转义序列,导致这些反斜杠丢失。需要将这段HTML转为Dart字符串,确保反斜杠被正确保留。

对应的HTML代码如下:

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>MathJax example</title>
  <script src="https://polyfill.io/v3/polyfill.min.js?features=es6"></script>
  <script id="MathJax-script" async
          src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js">
  </script>
</head>
<body>
When \(a \ne 0\), there are two solutions to \(ax^2 + bx + c = 0\) and they are 
\[x = {-b \pm \sqrt{b^2-4ac} \over 2a}.\]
</body>
</html>

解决方案

在Dart里有两种可靠的方式保留字符串中的反斜杠:

方法1:使用原始字符串(推荐)

Dart支持原始字符串,在字符串前添加r前缀,此时字符串中的反斜杠会被原样保留,无需额外转义。如果字符串包含换行或特殊引号,可以用三个单引号/双引号包裹:

final htmlContent = r'''
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>MathJax example</title>
  <script src="https://polyfill.io/v3/polyfill.min.js?features=es6"></script>
  <script id="MathJax-script" async
          src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js">
  </script>
</head>
<body>
When \(a \ne 0\), there are two solutions to \(ax^2 + bx + c = 0\) and they are 
\[x = {-b \pm \sqrt{b^2-4ac} \over 2a}.\]
</body>
</html>
''';

方法2:手动转义反斜杠

如果不使用原始字符串,需要把每个反斜杠替换为两个反斜杠(\\),Dart会将其解析为单个反斜杠存入字符串:

final htmlContent = '''
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>MathJax example</title>
  <script src="https://polyfill.io/v3/polyfill.min.js?features=es6"></script>
  <script id="MathJax-script" async
          src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js">
  </script>
</head>
<body>
When \\(a \\ne 0\\), there are two solutions to \\(ax^2 + bx + c = 0\\) and they are 
\\[x = {-b \\pm \\sqrt{b^2-4ac} \\over 2a}.\\]
</body>
</html>
''';

两种方法都能确保WebView加载这段HTML时,MathJax可以正确识别公式中的反斜杠,正常渲染数学公式。

内容的提问来源于stack exchange,提问作者Priyanshu Paliwal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 03:52:42