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

Rust中如何简洁消除格式化字符串输出的引号?

消除Rust输出中的引号问题

你的代码输出带引号,是因为连续两次使用了{:?}(Debug格式化标记):

  • 第一次在format!("{:?}", side_str)中,Debug格式会给字符串添加引号;
  • 第二次在println!的{:?}中,又对已经带引号的格式化结果再次做Debug输出,最终导致输出出现嵌套的引号。

以下是几种简洁的修复写法:

写法一:直接使用Display格式化(推荐)

去掉多余的format!调用,直接在println!中用{}(Display格式化标记)输出字符串:

use std::fmt::Write;

fn main() {
    let mut side_str = String::new();
    write!(&mut side_str, "world").unwrap();

    println!("hello_{}_", side_str);
}

{}是Rust默认的面向用户的格式化方式,字符串实现了Display trait,会直接输出内容本身,不会添加引号。

写法二:保留format!但改用Display格式

如果因场景需要必须使用format!,可以将format!中的{:?}换成{}:

use std::fmt::Write;

fn main() {
    let mut side_str = String::new();
    write!(&mut side_str, "world").unwrap();

    println!("hello_{}_", format!("{}", side_str));
}

核心逻辑:{:?}是为调试设计的格式化标记,会输出类型的调试表示(比如字符串加引号、结构体带字段名等);而{}是面向最终用户的格式化标记,输出内容的直观表示,适合生产环境的输出需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 07:02:36