addClassPath("C:/usr/java/ec-projects/ushi-libs/ushi.jar");
import java.util.Arrays;
import java.util.ArrayList;
import java.io.File;
import ushi.util.Splitter;
// ◆文字列から"b"の文字が最初に現れる位置(先頭が0)を得る
a = "orange melon strawberry grape";
n = a.indexOf("b");
// 18
print(n);
// ◆その位置から5文字を切り出す
b = a.substring(n, n+5);
// berry
print(b);
// ◆文字列の一部置き換え
print(a.replace("mel", "lem"));
// ◆数値と文字列をそれぞれ加算、文字列連結する
// BeanShellでは+は片方が文字列だと文字列になる
v1 = 10.2;
v2 = "15.3";
// 25.5 10.215.3 25.5 15.310.2
v3 = v1 + Double.parseDouble(v2);
v4 = v1 + v2;
v5 = Double.parseDouble(v2) + v1;
v6 = v2 + v1;
// BeanShellはprintfも変数展開もないので地道にこう書くしかない
print(v3 + " " + v4 + " " + v5 + " " + v6);
// ◆配列の3番目の要素から3個を取り出し、文字列に連結して出力する
String[] arr = {"orange", "melon", "strawberry", "grape", "apple", "banana"};
arrsub = Arrays.copyOfRange(arr, 2, 2+3);
// strawberry graph apple
print(Splitter.join(arrsub, " ", Splitter.QUOTE_NONE));
// ◆要素の追加。Javaでは配列には追加できないのでリストにして追加する
alist = new ArrayList(Arrays.asList(arr));
alist.add("peach");
// ◆要素の検索。配列よりリストの方が楽なのでリストの例で
print("index of 'peach' is:" + alist.indexOf("peach"));
// ◆一括代入はできない
//list(e1, e2, e3) = arrsub;
harr = new HashMap();
harr.put("orange", 80);
harr.put("melon", 1200);
harr.put("strawberry", 350);
harr.put("grape", 450);
// ◆キーの存在有無をチェックする
// yes
print(harr.containsKey("melon") ? "yes" : "no");
// no
print(harr.containsKey("lemon") ? "yes" : "no");
// ◆キー一覧をソートして、キーと値を出力する
keys = harr.keySet().toArray();
Arrays.sort(keys);
for(k : keys){ print(k + "\t" + harr.get(k)); }
// ◆既定値付き引数を持つ関数は定義できないので通常の関数のみ実装
getFileNames(dir, ext){
d = new File(dir);
files = new ArrayList();
for(f : d.listFiles()){
if(f.isFile() && (ext == "" || f.name.endsWith(ext))){ files.add(f.name); }
}
return files;
}
print(Splitter.join(getFileNames(".", ""), " ", Splitter.QUOTE_NONE));
print(Splitter.join(getFileNames(".", ".txt"), " ", Splitter.QUOTE_NONE));
// ◆可変長引数はBeanShellでは未サポート(Java5はサポート済)
// 代わりに配列で定義する
getSum(int[] nums){
sum = 0;
for(v : nums){ sum += v; }
return sum;
}
// 46
print(getSum(new int[]{10,11,12,13}));
// end.