首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >为什么多行字符串在开头跳过预期的空格?

为什么多行字符串在开头跳过预期的空格?
EN

Stack Overflow用户
提问于 2021-01-06 18:04:22
回答 3查看 1.6K关注 0票数 1

我有一些带有指定空格的多行字符串。对于其中一些,删除了一些空白:

代码语言:javascript
代码运行次数:0
运行
复制
const WORKING: &str = "\
┌─┬┐
│ ││
╞═╪╡
│ ││
├─┼┤
├─┼┤
│ ││
└─┴┘
";

const NON_WORKING: &str = "\
  ╷ 
  │ 
╶─┼╴
  │ 
╶─┼╴
╶─┼╴
  │ 
  ╵ 
";

pub fn main() {
    println!("{}", WORKING);
    println!("{}", NON_WORKING);
}

它在不工作的行的开头移除一些空格。印刷:

代码语言:javascript
代码运行次数:0
运行
复制
╷ 
  │ 
╶─┼╴
  │ 
╶─┼╴
╶─┼╴
  │ 
  ╵ 

我认为它必须处理\的使用,但是我不知道如何在之后不启动行来解决它

游乐场

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-01-06 20:19:56

我自己也没有尝试过,但我听说板条箱旨在帮助编写包含缩进的多行字符串文字。它平等地从所有行中删除前导空格,而不是\独立地从每一行中删除前导空格的行为。

使用indoc 使用indoc::indoc;fn main() { let testing = indoc!{“def hello():print('Hello,world!') hello() "};let期望值=”def hello():\n print('Hello,world!‘)\n\n Hello()\n assert_eq!(预期测试);}

票数 3
EN

Stack Overflow用户

发布于 2021-01-06 18:18:27

锈蚀会自动删除指定的空格,因为长字符串通常被分割成这样的多行,而空格只是为了格式化目的。

您可以使用原始字符串禁用此行为。请注意开头和结尾处的额外r和自定义分隔符#

代码语言:javascript
代码运行次数:0
运行
复制
const NON_WORKING: &str = r#"
  ╷ 
  │ 
╶─┼╴
  │ 
╶─┼╴
╶─┼╴
  │ 
  ╵ 
"#;
票数 0
EN

Stack Overflow用户

发布于 2021-01-07 13:06:09

最后,我使用了简单的str并删除了初始的\n

代码语言:javascript
代码运行次数:0
运行
复制
let WORKING: &str ="
 ── 
    
 ── 
    
 ── 
 ── 
    
 ── ".trim_start_matches("\n")
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65601049

复制
相关文章

相似问题

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