11# 基础I/O
22## 字符串基础
3- [ 关于字符串的详细信息] ( string.md ) 。
4- 此处你暂时只需要知道的是,你可以在一对 ` "" ` 中放若干文字,它们可以构成字符串:
3+ 你将[ 在之后读到] ( string.md ) 关于字符串更详细的信息。
4+
5+ 字符串可用于存储一串文字。
6+
7+ 在一对 ` "" ` 中放若干文字,它们可以构成字符串字面量:
58``` julia-repl
69julia> "A quick brown fox jumps over the lazy dog."
710"A quick brown fox jumps over the lazy dog."
@@ -10,53 +13,91 @@ julia> "喵( o=^•ェ•)o"
1013"喵( o=^•ェ•)o"
1114```
1215
13- 字符串与字符串中的内容通常不是同一个东西 :
16+ 字符串与字符串中的内容通常是不相等的 :
1417``` julia-repl
15- julia> "0"==0
18+ julia> "0" == 0
19+ false
20+
21+ julia> "sqrt(2)" == sqrt(2)
1622false
1723
18- julia> A quick brown fox jumps over the lazy dog.
19- ERROR: syntax: extra token "quick" after end of expression
24+ julia> "a" == a
25+ ERROR: UndefVarError: `a` not defined in `Main`
2026```
2127
2228## print
23- ` print ` 是基本的输出方式
29+ ` print ` 是最基本与常用的输出方式。在 REPL 中,输出结果会出现在代码后。
2430``` julia-repl
2531julia> print(0)
26320
27- julia> print(1, 2, 3) # 允许接受多个参数
33+ julia> print(1, 2, 3) # 允许接受多个参数,它们的输出间没有空隙
2834123
29- julia> print("world.me.say_hello()") # (这个字符串内容看上去像代码
35+ julia> print("world.me.say_hello()") # 输出字符串
3036world.me.say_hello()
31- julia>
37+ julia> print(1, " ", 2, " ", 3) # 手动填充空格
38+ 1 2 3
3239```
3340
3441## println
35- ` println ` 与 ` print ` 相似,不同的是在末尾会多进行一次换行。
36- 为了美观,许多人会在输出时选择它而不是 ` print ` 。两者配合也可以完成更好的输出效果。
42+ ` println ` 除完成 ` print ` 的职责之外在末尾会多进行一次换行。
43+
44+ 为了代码简洁和输出结果美观,有时会在输出时选择它而不是 ` print ` 。两者配合也可以完成更好的输出效果。
3745``` julia-repl
46+ julia> print(0, "\n")
47+ 0
48+
3849julia> println(0)
39500
4051
41- julia> println(1,2, 3)
52+ julia> println(1, 2, 3)
4253123
4354
44- julia>
55+ julia> println("╭╮"); println("╰╯")
56+ ╭╮
57+ ╰╯
4558```
4659
4760## printstyled
48- ` printstyled ` 可以在环境允许的情况下输出有风格的文字(当前功能包括彩色与粗体)
61+ ` printstyled ` 可以在环境允许的情况下输出有风格的文字。可配置的选项包括粗体、斜体、下划线、闪烁、前景背景反转、隐藏与色彩。
4962``` julia-repl
5063julia> printstyled(1, 2, 3; color=:red)
51- 123 # 你看,这里不允许这个功能,使用它输出没有特殊效果(
64+ 123 # 如果系统支持,在 REPL 中显示红色
5265```
5366
54- 它基于的标准是广泛用于现代控制台的 ` ansi-escape-code/sequence ` (可追溯至 ` VT100 ` ) ,可参阅 [ windows 的相关支持] ( https://docs.microsoft.com/zh-CN/windows/console/console-virtual-terminal-sequences ) 。
67+ 在控制台中, 它基于的标准是广泛用于现代控制台的 ` ansi-escape-code/sequence ` ,可参阅 [ windows 的相关支持] ( https://docs.microsoft.com/zh-CN/windows/console/console-virtual-terminal-sequences ) 。
5568
5669## 输入
57- 为方便进行之后的练习,现提供以下代码
70+ 既然有输出,就要有输入。Julia 中的 ` readuntil ` 与 ` readline ` 会读入字符串。
71+
72+ ` readline ` 会获取连续的字符,直到行尾。
73+ ``` julia-repl
74+ julia> a = readline();
75+ read read read!
76+
77+ julia> a
78+ "read read read!"
79+ ```
80+
81+ ` readuntil ` 会获取连续的字符,直到读到空格。
82+ ``` julia-repl
83+ julia> a = readuntil(stdin, ' ');
84+ read buffered
85+
86+ julia> buffered
87+ ERROR: UndefVarError: `buffered` not defined in `Main`
88+ Suggestion: check for spelling errors or missing imports.
89+
90+ julia>
91+
92+ julia> a
93+ "read"
94+ ```
95+
96+ 上面的结果是在 REPL 中得到的。字符串 ` buffered ` 及回车没有被读取,因此仍在缓冲区中,自动变成了一行命令的输入。
97+
98+ 两者也可以配合使用:
5899``` julia-repl
59- julia> a= readuntil(stdin,' '); b= readline() # 前者读到空格为止,后者读到行尾
100+ julia> a = readuntil(stdin, ' '); b = readline()
60101first second
61102"second"
62103
@@ -67,9 +108,9 @@ julia> b
67108"second"
68109```
69110
70- 利用 ` parse ` 函数将字符串转为整数的功能,你可以读入整数
111+ 利用 ` parse ` 函数将字符串转为整数的功能,可以实现读入整数的效果。
71112``` julia-repl
72- julia> a= parse(Int,readuntil(stdin,' ')); b= parse(Int,readline());
113+ julia> a = parse(Int, readuntil(stdin, ' ')); b = parse(Int, readline());
731142333 4
74115
75116julia> a, b
0 commit comments