C# 代码格式化
格式化所有处理都在浏览器本地完成,数据不上传服务器
C# 代码的缩进重排。不是数括号 —— 用真正的语法分析器(tree-sitter)把代码解析成语法树,按语法结构决定每一行该缩进几层。 为什么这件事值得用解析器?「数括号」那种做法分不清 `}` 是在代码里还是在字符串或注释里。一份含 `"}"` 的代码就能让它后面的缩进全乱,而它自己也看不出哪里错了。有了语法树,缩进块的边界由解析器给出。 ⚠️ 只改每行开头的空白,行内一个字符都不动。 这是刻意的约束:格式化器最坏的失败不是「排得不好看」,而是改坏了用户的代码 —— 那比不做更糟。只动行首空白意味着字符串、注释、模板里的任何内容都不可能被碰到;语法再怪也只是缩进不对,代码本身照跑。所以这里不做行内空格规整、不重排、不换行、不删行。 语法不完整时照样输出,不报错 —— 边写边格式化就是这么用的。
功能
- 用 tree-sitter 真的解析语法,缩进按语法结构算
- 字符串、注释里的括号与关键字不参与结构判断
- 只改行首空白,行内一个字符都不动
- 缩进可选 2 空格 / 4 空格 / 制表符
- 语法不完整时照样输出,不报错
- 支持代码高亮显示
- 全部在本机完成,代码不上传
使用方法
- 把代码粘贴到左侧
- 选择缩进宽度
- 按 Ctrl/⌘ + Enter 或点「运行」
- 点「复制」取走结果
常见问题
- 和那些「在线格式化」网站有什么不同?
- 多数在线格式化工具做的是文本层面的缩进整理 —— 逐字符扫描,看到 `{` 就缩进、看到 `}` 就退回。它们分不清这个括号是在代码里还是在字符串里。这里用的是真正的解析器:代码先被解析成语法树,每一行的层级由它所属的语法结构决定。 代价是每种语言要下载一份语法文件(几百 KB 到几 MB),而且只在你打开这个工具页时才下载。换来的是结构判断不会出错。
- 为什么我的代码排完之后没变化?
- 那通常说明它本来就是对的,而这正是最好的结果。格式化器最坏的失败不是「排得不好看」,而是把本来正确的代码改动了 —— 那种改动会进 diff、进 code review,而且很难说清是谁改的。所以这里的策略是只在确实需要时动手。 如果代码确实乱了,输出会变。
- 它会动我的代码内容吗?
- 不会。这里只改每行开头的空白 —— 行内的一个字符都不动,不重排、不换行、不删行、不动字符串与注释。所以即使遇到格式再怪异的代码,最坏的结果也只是缩进不合你的意,代码本身照跑。 顺带一提,这也意味着它不能替你补上缺失的语法(漏掉的括号、少写的分号)。它是缩进工具,不是代码修复工具。
相关工具
JS 美化与压缩
格式化在线 JS 压缩与美化:压缩去掉注释与空白(保留 /*! 许可声明),美化按大括号与分号缩进排版。字符串与模板字符串内容原样保留,文件不上传。
JS 压缩混淆
格式化去掉注释与空白,字符串与数字改成转义写法,局部变量换成短名 —— 体积更小,随手一看也更难读。全部在本机完成。
代码着色
网络把代码染上语法颜色,选中复制即可带颜色贴进 PPT 与 Word;也可以输出内联样式的 HTML 源码,直接放进博客或邮件。支持 26 种语言。
Shell 格式化
格式化给 Shell 脚本按结构缩进:if/fi、for/done、case/esac 与函数体都会对齐。只改行首空白,heredoc 与跨行字符串逐字保留。
JSON 格式化
格式化在线 JSON 格式化与校验工具:树形折叠浏览、搜索键值、逐节点改值与删除、语法错误定位到具体行列,输入框带行号与高亮。全部在浏览器本地完成。
JSON 转代码
格式化把 JSON 样本转成 TypeScript interface、Go struct、Java class 或 Rust struct:不齐的键标成可选、类型冲突退化为联合类型。全程在浏览器本地生成。