string - 将字符串拆分为固定长度的块并在 Raku 中的单独行中写入
问题描述
我有一个文件test.txt
:
Stringsplittingskills
我想读取这个文件并写入另一个文件out.txt
,每行包含三个字符,例如
Str
ing
spl
itt
ing
ski
lls
我做了什么
my $string = "test.txt".IO.slurp;
my $start = 0;
my $elements = $string.chars;
# open file in writing mode
my $file_handle = "out.txt".IO.open: :w;
while $start < $elements {
my $line = $string.substr($start,3);
if $line.chars == 3 {
$file_handle.print("$line\n")
} elsif $line.chars < 3 {
$file_handle.print("$line")
}
$start = $start + 3;
}
# close file handle
$file_handle.close
当字符串的长度不是 3 的倍数时,这运行良好。当字符串长度是 3 的倍数时,它会在输出文件的末尾插入额外的换行符。当字符串长度是 3 的倍数时,如何避免在末尾插入新行?
我尝试了另一种更短的方法,
my $string = "test.txt".IO.slurp;
my $file_handle = "out.txt".IO.open: :w;
for $string.comb(3) -> $line {
$file_handle.print("$line\n")
}
它仍然存在同样的问题。
解决方案
spurt "out.txt", "test.txt".IO.comb(3).join("\n")
推荐阅读
- jhipster - JHipster - How to generate Entity with a field as List of String?
- apache - 如何将 jsr 223 采样器中的采样器统计信息写入 jmeter 侦听器
- ios - 更改 TitleTextAttributes 文本颜色取决于导航栏颜色
- elastic-stack - filebeat 收集器的最大 close_inactive 时间
- hibernate - 带有连接的休眠条件查询 - 避免从第二个表中进行完全选择
- python - Airflow BashOperator 针对特定路径
- javascript - Angular 6 - 比较两个可观察的长度
- git - 使用 Jenkinsfile 在一个分支中创建多个管道
- javafx - JavaFX - 从线程实时更新线图
- c# - 有没有办法用 Substring 桥接空行?