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
相关产品推荐
相关产品推荐

