2 single: Stdlib 関数; はじめに
8 stdlib.ring 関数の用法を学びます。
10 この関数の使用前に stdlib.ring ライブラリを読み込みます。
16 stdlibcore.ring (StdLib 関数) も使えます (クラスはありません)。
18 stdlib.ring (関数とクラス) は RingLibCurl, RingOpenSSL などのライブラリを読み込むため、スタンドアローン型のコンソールアプリケーションの作成時は好都合です。
21 pair: Stdlib 関数; puts()
43 pair: Stdlib 関数; print()
48 文字列の表示 - \\n, \\t および \\r に対応しています。
62 print("\nHello, World\n\nHow are you? \t\t I'm fine!\n")
64 print("\nx value = #{x} , y value = #{y} \n")
68 pair: Stdlib 関数; Print2Str() 関数
77 print2Str(文字列) ---> 文字列
85 mystring = print2str("Hello, #{world} \nIn Year \n#{2000+17} \n")
99 pair: Stdlib 関数; getstring()
104 キーボードからの標準入力を取得します。 - 返値は文字列です。
112 pair: Stdlib 関数; getnumber()
117 キーボードからの標準入力を取得します。 - 返値は数値です。
124 pair: Stdlib 関数; apppath()
129 アプリケーションフォルダのパスを取得します。
135 AppPath() ---> パスの文字列
144 Puts("Test AppPath()")
148 pair: Stdlib 関数; JustFilePath()
153 ファイル名を除去したファイルパスを返します。
159 JustFilePath(cFile) ---> 文字列はパスです。
167 see justfilePath("b:\ring\applications\rnote\rnote.ring")
173 b:\ring\applications\rnote\
177 pair: Stdlib 関数; JustFileName()
182 ファイルパスを除去したファイル名を返します。
188 JustFileName(cFile) ---> 文字列はファイル名です。
196 see justfileName("b:\ring\applications\rnote\rnote.ring")
206 pair: Stdlib 関数; value()
211 リストまたはオブジェクトからコピーを作成します。
217 value(リスト) ---> 新しいリスト
226 del(value(aList), 1) # 最初のリストを削除
227 see aList # 1 ~ 10 までの数値を表示します。
230 pair: Stdlib 関数; times()
250 Times ( 3 , func { see "Hello, World!" + nl } )
253 pair: Stdlib 関数; map()
264 Map(alist,function) ---> リスト
273 See Map( 1:10, func x { return x*x } )
276 pair: Stdlib 関数; filter()
281 項目を篩い分けるために各リストの項目へ関数を実行します。
287 Filter(alist,function) ---> リスト
295 Puts("Test Filter()")
296 See Filter( 1:10 , func x { if x <= 5 return true else return false ok } )
299 pair: Stdlib 関数; split()
310 Split(cstring, 区切り文字) ---> リスト
319 See Split("one two three four five"," ")
323 pair: Stdlib 関数; splitmany()
328 文字列の語からリスト項目へ変換します。いろいろな区切り文字を使うことができます。
334 SplitMany(cstring, 文字列またはリスト形式による区切り文字) --> リスト
342 Puts("Test SplitMany()")
343 See SplitMany("one,two,three,four and five"," ,")
347 pair: Stdlib 関数; newlist()
359 NewList(nRows, nColumns) ---> 新しいリスト
367 Puts("Test Newlist()")
370 chrArray = newlist(a1,a2)
371 numArray = newlist(a1,a2)
372 chrArray[1][1] = "Hello"
373 numArray[1][1] = 987.2
374 See chrArray[1][1] + nl
375 See numArray[1][1] + nl
378 pair: Stdlib 関数; capitalized()
383 一文字目を大文字へ変換した文字列のコピーを返します。
389 Capitalized(文字列) ---> 文字列
397 Puts("Test Capitalized()")
398 See capitalized("welcome to the Ring Programming Language")
401 pair: Stdlib 関数; isspecial()
406 文字が特殊文字であるかどうかを確認します。
413 IsSpecial(char) ---> True/False
421 Puts("Test Isspecial()")
422 See "Isspecial = " + isSpecial("%") + nl
425 pair: Stdlib 関数; isvowel()
436 IsVowel(char) ---> True/False
444 Puts("Test Isvowel()")
445 See "Isvowel = " + isVowel("c") + nl
449 pair: Stdlib 関数; linecount()
460 LineCount(cFileName) ---> 行数
468 Puts("Test Linecount()")
469 See "the number of lines = " + lineCount("test.ring")
472 pair: Stdlib 関数; factorial()
483 Factorial(number) ---> 数値
491 Puts("Test Factorial()")
492 see "6 factorial is : " + Factorial(6)
495 pair: Stdlib 関数; fibonacci()
506 Fibonacci(number) ---> 数値
514 Puts("Test Fibonacci()")
515 see "6 Fibonacci is : " + Fibonacci(6)
518 pair: Stdlib 関数; isprime()
529 isprime(number) ---> 数値
537 Puts("Test Isprime()")
538 if isPrime(16) see "16 is a prime number"
539 else see "16 is not a prime number" ok
542 pair: Stdlib 関数; sign()
553 Sign(number) ---> 数値 ( -1 = 負数 , 0 , 1 (整数) )
562 see "sign of 12 is = " + sign(12) + nl
565 pair: Stdlib 関数; list2file()
570 リスト項目をテキストファイルへ書き出します (項目ごとに改行されます)。
576 List2File(aList, cFileName)
585 Puts("Test List2File()")
586 list2file(1:100,"myfile.txt")
590 pair: Stdlib 関数; file2list()
595 テキストファイルを読み取って行をリスト項目へ変換します。
601 File2List(cFileName) ---> リスト
610 Puts("Test File2List()")
611 see len(file2list("myfile.txt"))
614 pair: Stdlib 関数; startswith()
619 指定された文字列が指定された部分文字列で始まるならば true を返します。
627 StartsWith(string, substring) ---> True/False
636 Puts("Test Startswith()")
637 see Startswith("CalmoSoft", "Calmo") + nl
640 pair: Stdlib 関数; endswith()
645 指定された文字列が指定された部分文字列で終わるならば true を返します。
653 Endswith(string, substring) ---> True/False
661 Puts("Test Endswith()")
662 see endsWith("CalmoSoft", "Soft") + nl
665 pair: Stdlib 関数; gcd()
670 整数の最大公約数 (Greatest Common Divisor) を計算します。
676 Gcd(number,number) ---> 数値
685 see gcd (24, 32) + nl
689 pair: Stdlib 関数; lcm()
694 整数の最小公約数 (Least Common Multiple) を計算します。
700 lcm(number,number) ---> 数値
712 pair: Stdlib 関数; sumlist()
731 Puts("Test Sumlist()")
733 see Sumlist(aList) + nl
736 pair: Stdlib 関数; prodlist()
747 prodlist(リスト) ---> 数値
755 Puts("Test Prodlist()")
757 see Prodlist(aList) + nl
760 pair: Stdlib 関数; evenorodd()
767 テストの結果は (1 = 奇数、2 = 偶数) です。
773 evenorodd(number) ---> 1 (奇数) または 2 (偶数)
781 Puts("Test Evenorodd()")
783 see Evenorodd(nr) + nl
786 pair: Stdlib 関数; factors()
797 factors(number) ---> リスト
805 Puts("Test Factors()")
808 see "Factors of " + n + " = "
809 for i = 1 to len(aList)
810 see "" + aList[i] + " "
815 pair: Stdlib 関数; ispalindrome()
826 IsPalindrome(String) ---> True/False
834 Puts("Test IsPalindrome()")
836 see IsPalindrome(cString)
839 .. note:: Ring 1.9 以前は Palindrome() 関数として使用可能でした。
842 pair: Stdlib 関数; isleapyear()
847 指定された年がグレコリオ暦における閏年であるかどうか確認します。
853 Isleapyear(number) ---> True/False
861 Puts("Test Isleapyear()")
863 if Isleapyear(year) see "" + year + " is a leap year."
864 else see "" + year + " is not a leap year." ok
868 pair: Stdlib 関数; binarydigits()
871 =======================
873 非負整数値を指定することで二進数配列の計算をします。
879 binarydigits(number) ---> 文字列
887 Puts("Test Binarydigits()")
889 see "Binary digits of " + b + " = " + Binarydigits(b)
892 pair: Stdlib 関数; matrixmulti()
895 ======================
903 Matrixmulti(List,List) ---> リスト
912 Puts("Test Matrixmulti()")
913 A = [[1,2,3], [4,5,6], [7,8,9]]
914 B = [[1,0,0], [0,1,0], [0,0,1]]
915 see Matrixmulti(A, B)
919 pair: Stdlib 関数; matrixtrans()
922 ======================
924 サイズ指定による矩形行列の変換を行います。
930 Matrixtrans(リスト) ---> リスト
938 # サイズ指定による矩形行列の変換を行います。
939 Puts("Test Matrixtrans()")
940 matrix = [[78,19,30,12,36], [49,10,65,42,50], [30,93,24,78,10], [39,68,27,64,29]]
941 see Matrixtrans(matrix)
944 pair: Stdlib 関数; dayofweek()
949 指定された日付 (西暦四桁-月-日) における曜日を返します。
955 dayofweek(文字列) ---> 文字列
963 # 指定された日付における曜日を返します。
964 Puts("Test Dayofweek()")
966 see "Data : " + date + " - Day : " + Dayofweek(date) + nl
969 pair: Stdlib 関数; permutation()
974 n 個の異なる数値における配列を全て生成します。
988 # n 個の異なる数値における配列を全て生成します。
989 Puts("Test Permutation()")
992 for i = 1 to len(list)
1000 pair: Stdlib 関数; readline()
1009 .. code-block:: ring
1011 readline(fp) ---> 文字列
1015 .. code-block:: ring
1020 Puts("Test Readline()")
1021 fp = fopen("test.ring","r")
1023 See Readline(fp) end
1027 pair: Stdlib 関数; substring()
1032 文字列の指定位置を始点とした部分文字の位置を返します。
1036 .. code-block:: ring
1038 Substring(str,substr,npos) ---> 文字列
1042 .. code-block:: ring
1046 # 文字列の指定位置を始点とした部分文字の位置を返します。
1047 Puts("Test Substring()")
1051 see substring(a,b,i)
1054 pair: Stdlib 関数; changestring()
1059 部分文字列を指定位置から別の部分文字の指定位置へ変更します。
1063 .. code-block:: ring
1065 Changestring(cString, nPos1, nPos2, cSubstr) ---> cString
1069 .. code-block:: ring
1073 # 部分文字列を指定位置から別の部分文字の指定位置へ変更します。
1074 Puts("Test Changestring()")
1075 see Changestring("Rmasdg",2,5,"in") # Ring
1078 pair: Stdlib 関数; sleep()
1087 .. code-block:: ring
1093 .. code-block:: ring
1097 Puts("Test Sleep()")
1098 see "Wait 3 Seconds!"
1103 pair: Stdlib 関数; ismainsourcefile()
1105 IsMainSourceFile() 関数
1106 =======================
1108 現在のファイルがメインソースファイルであるかどうか確認します。
1112 .. code-block:: ring
1114 IsMainSourceFile() ---> True/False
1118 .. code-block:: ring
1122 if ismainsourcefile()
1127 pair: Stdlib 関数; direxists()
1132 ディレクトリが存在するかどうか確認します。
1136 .. code-block:: ring
1138 DirExists(文字列) ---> True/False
1142 .. code-block:: ring
1146 see "Check dir : b:\ring "
1147 puts( DirExists("b:\ring") )
1148 see "Check dir : C:\ring "
1149 Puts( DirExists("C:\ring") )
1152 pair: Stdlib 関数; makedir()
1161 .. code-block:: ring
1167 .. code-block:: ring
1172 puts("create Directory : myfolder")
1177 pair: Stdlib 関数; FSize()
1186 .. code-block:: ring
1188 FSize(ファイルのハンドル) ---> 数値 (バイト単位によるファイルサイズ)
1191 pair: Stdlib 関数; TrimAll()
1196 文字列から空白とタブ文字を全て除去します。
1200 .. code-block:: ring
1202 TrimAll(cString) ---> cString # 空白とタブを除去します。
1205 pair: Stdlib 関数; TrimLeft()
1210 文字列の左側にある空白とタブ文字を全て除去します。
1214 .. code-block:: ring
1216 TrimLeft(cString) ---> cString # 左側から空白とタブを除去します。
1219 pair: Stdlib 関数; TrimRight()
1224 文字列の右側にある空白とタブ文字を全て除去します。
1228 .. code-block:: ring
1230 TrimRight(cString) ---> cString # 右側から空白とタブを除去します。
1233 pair: Stdlib 関数; EpochTime()
1242 .. code-block:: ring
1244 EpochTime(cDate,cTime) ---> エポック時間
1248 .. code-block:: ring
1250 see EpochTime( Date(), Time() )
1253 pair: Stdlib 関数; SystemCmd() 関数
1258 SystemCmd() 関数は変数を出力してシステムコマンドを実行します。
1262 .. code-block:: ring
1268 .. code-block:: ring
1270 cYou = SystemCmd("whoami") # 記録されたユーザ名は変数へ出力されます。
1271 cThem = SystemCmd("dir c:\Users") # ディレクトリのリストは変数へ出力されます。
1275 pair: Stdlib 関数; ListAllFiles() 関数
1280 ListAllFiles() 関数でフォルダにあるファイルのグループ、およびそのサブフォルダを手軽に処理できます。
1284 .. code-block:: ring
1286 ListAllFiles(cFolder,cExtension) ---> ファイルのリスト
1290 .. code-block:: ring
1292 aList = ListAllFiles("c:/ring/ringlibs","ring") # *.ring のみ
1298 .. code-block:: ring
1300 see listallfiles("b:/ring/ringlibs/weblib","") # 全てのファイル
1303 pair: Stdlib 関数; SystemSilent() 関数
1308 SystemSilent() 関数は実行結果を表示せずにシステムコマンドを実行します。
1312 .. code-block:: ring
1314 SystemSilent(cCommand)
1317 pair: Stdlib 関数; OSCreateOpenFolder() 関数
1319 OSCreateOpenFolder() 関数
1320 =========================
1322 フォルダの作成後に、現在のフォルダを作成したフォルダへ変更します。
1326 .. code-block:: ring
1328 OSCreateOpenFolder(cCommand)
1332 pair: Stdlib 関数; OSCopyFolder() 関数
1337 現在のフォルダへフォルダをコピーします。
1339 引数 : 親フォルダ (cParentFolder) のパス、およびコピー先のフォルダ名 (cFolderName)
1343 .. code-block:: ring
1345 OSCopyFolder(cParentFolder,cFolderName)
1349 現在のフォルダへ b:\\ring\\ringlibs\\stdlib フォルダをコピーするには
1351 .. code-block:: ring
1353 OSCopyFolder("b:\ring\ringlibs\","stdlib")
1357 pair: Stdlib 関数; OSDeleteFolder() 関数
1360 =====================
1362 現在のディレクトリにあるフォルダを削除します。
1366 .. code-block:: ring
1368 OSDeleteFolder(cFolderName)
1371 pair: Stdlib 関数; OSCopyFile() 関数
1376 現在のディレクトリへファイルをコピーします。
1380 .. code-block:: ring
1382 OSCopyFile(cFileName)
1385 pair: Stdlib 関数; OSDeleteFile() 関数
1394 .. code-block:: ring
1396 OSDeleteFile(cFileName)
1399 pair: Stdlib 関数; OSRenameFile() 関数
1408 .. code-block:: ring
1410 OSRenameFile(cOldFileName,cNewFileName)
1414 pair: Stdlib 関数; List2Code() 関数
1419 この関数は Ring リストを実行中に Ring ソースコードへ変換することでソースファイルを保存できるようにします。
1421 リストは文字列、数値または部分リストを有しています。
1425 .. code-block:: ring
1427 load "stdlibcore.ring"
1433 .. code-block:: ring
1436 1,2,3,4,5,6,7,8,9,10
1441 pair: Stdlib 関数; Str2ASCIIList() 関数
1444 ====================
1446 各項目が1バイト ASCII コードとなる文字列表現のバイト文字列を数値リストへ変換します。
1450 .. code-block:: ring
1452 Str2ASCIIList(文字列) ---> 数値リスト
1455 pair: Stdlib 関数; ASCIIList2Str() 関数
1458 ====================
1460 各項目が1バイト ASCII コード表現となる数値リストをバイト文字列へ変換します。
1464 .. code-block:: ring
1466 ASCIIList2Str(数値リスト) ---> 文字列
1471 .. code-block:: ring
1473 load "stdlibcore.ring"
1477 aList = Str2ASCIILIST(cStr)
1480 cStr2 = ASCIIList2Str(aList)
1486 .. code-block:: none
1498 pair: Stdlib 関数; IsListContainsItems() 関数
1500 IsListContainsItems() 関数
1501 ==========================
1505 .. code-block:: ring
1507 IsListContainsItems(aParent,aChild) ----> True/False
1511 .. code-block:: ring
1513 load "stdlibcore.ring"
1515 aList2 = [:h,:l,:p,:u]
1516 ? IsListContainsItems(aList1,aList2)
1519 pair: Stdlib 関数; IsBetween() 関数
1526 .. code-block:: ring
1528 IsBetween(nNumber,nMin,nMax) ----> True/False
1532 .. code-block:: ring
1534 load "stdlibcore.ring"
1541 pair: Stdlib 関数; TimeInfo() 関数
1548 .. code-block:: ring
1550 TimeInfo(cInformation) ----> 文字列
1552 cInformation の値はこのようになります。
1554 .. code-block:: ring
1569 .. code-block:: ring
1571 load "stdlibcore.ring"
1574 ? timeInfo(:hour_12)