最簡單定義:char
是串,字元陣列
d有三種陣列型別.
import std.stdio;
void
main()
//用(c-z)可以看到結果,否則《回車》沒用.
readf
不適合讀串,讀符就差不多了.
readln
適合讀串,就不需要%s及&運算子
了.
如下:
import std.stdio;
void
main()
可用std.string
的strip
去掉.
import std.stdio;
import std.string;
void
main()
string name = strip(readln());
,無參readln()
返回剛才讀的行.
std.format
的formattedread
,可用於解析輸入.
import std.stdio;
import std.string;
import std.format;
void
main()
""
為串,''
為符.
string, wstring,和dstring
都是不變的,可修改char,wchar,dchar
但串
是不變的.
string cannotbemutated =
"hello"
; cannotbemutated[0]
='h'
;//編譯錯誤
//及char
a_slice =
"hello"
;//編譯錯誤
"hello"
是串
,char
為切片,如果能編譯,則能修改這個串,這個串就不是不變
的了.可用.dup
提供副本.
import std.stdio;
void
main()
切片與串是不相容
的關係.有切片就不能有串.
string result = s ~ '.';
編譯有問題.
string result = (s ~ '.').idup;
..idup
用於生成不可變
副本.
切片=>串(idup),串=>切片(dup)
.
這個utf8
串,看起來的長度與實際的長度不一樣.
為避免unicode
問題,請使用相關文字庫.
import std.stdio;
void
main()
串連線
import std.stdio;
import std.string;
void
main()
//比較串
import std.stdio;
import std.string;
void
main()
else
else
writeln
("'"
, former,
"' comes before '"
, latter,
"'.");
}}
相應處理串函式
小寫串與大寫是不一樣的,不過可忽略大小寫比較(icmp)
,串是陣列,所以可用陣列如std.array, std.algorithm, 和 std.range
中相關函式…
05用d程式設計切片
切片,動態陣列的別名.起.尾 是這樣的 即左包右不包 切片不是實體,就像鑰匙一樣.如果切片修改實體,則實體也跟著變了.a.a 大小為0,a.表示陣列長度,等價於陣列.長度.dup複製實體.如下 import std.stdio void main 賦值 int 3 a 1 1,1 int 3 b 2...
08用d程式設計域
不能在內部域中定義與外部域中相同的名字.有的在域的最前定義變數 一般在使用前定義變數,而不是在之後.找不到,也不規範 最好在剛要使用前定義,在速度,不犯錯,可讀,維護上都不錯.import std.stdio void main i 10 i 在 中宣告多種型別變數 d官方程式設計風格 三元符.三個...
11用d程式設計開關
switch expression if else等塊,會引進域.而case不會.switch value 可用goto.goto case 走到下個 goto default goto case 走到 表示式必須是整,串,極,即串可用作例.switch dievalue 值可以有區間.還可以並列....