我今天遇到一个奇怪的问题。我有这样的逐字字符串:
var s = @" 0 1
0 0"
即在那之后有一条新线。我的Environment.NewLine设置为\ r \ n
这是单元测试的一部分,在过去的几个月中,测试一直运行良好。现在,当我运行测试时,上面的字符串声明将导致:
" 0 1\n 0 0"
代替
" 0 1\r\n 0 0"
意味着测试失败。
我已经抛弃了每个角色,以证明这是真的。我也尝试过不使用逐字字符串:
var s = " 0 1\r\n 0 0"
然后测试通过。
有人知道这里会发生什么吗?
答案 0 :(得分:2)
答案是这样的:Git(很有可能)将文件中的行尾交换为LF。依靠单元测试中的文件行结尾不是一个好主意,因此我更改了代码以在所有情况下都明确指定换行符,因此:
var s = " 0 1\r\n 0 0"
答案 1 :(得分:1)
如果要在单元测试中使用字符串,则最好确保内容始终相同。我建议这样声明:
var s = $" 0 1{Enviroment.NewLine}0 0";
答案 2 :(得分:1)
您可以将字符串插值与逐字记录一起使用以添加控制字符。
df_rld %>%
select(type, run_length) %>%
mutate(run_length = as.numeric(run_length)) %>%
group_by(type, run_length) %>%
count(run_length) %>%
group_by(type) %>%
mutate(ratio = n/sum(n))
#> # A tibble: 5 x 4
#> # Groups: type [3]
#> type run_length n ratio
#> <fct> <int> <int> <dbl>
#> 1 A 15 1 1
#> 2 B 24 3 0.3
#> 3 B 26 7 0.7
#> 4 C 27 10 0.833
#> 5 C 28 2 0.167