実行環境はMacBook Air.


$ uname -m -r -s -v
Darwin 10.6.0 Darwin Kernel Version 10.6.0: Wed Nov 10 18:13:17 PST 2010; root:xnu-1504.9.26~3/RELEASE_I386 i386

Javaのサンプルコードと実行結果。


$ java -version
java version "1.6.0_24"
Java(TM) SE Runtime Environment (build 1.6.0_24-b07-334-10M3326)
Java HotSpot(TM) 64-Bit Server VM (build 19.1-b02-334, mixed mode)
 
$ cat ./SplitSample.java 
public class SplitSample{
 
  public static void main(String[] args){
 
    String[] targets = {
      "1-2",
      "1--2",
      "1-",
      "1--",
      "-2",
      "--2",
      "-",
      "--",
      "---",
      "1-2-3",
      "-1-2-3-",
      "-1--2--3-",
    };
 
    for(String s : targets){
      String[] a = s.split("-");
      System.out.println(s + " => " + inspect(a));
    }
  }
 
  private static String inspect(String[] a){
    String buf = "[";
    if(a.length > 0){
      for(String s : a){
        buf += "\"" + s + "\", ";
      }
      buf = buf.substring(0, buf.length() - 2);
    }
    buf += "]";
    return buf;
  }
 
}
 
$ javac ./SplitSample.java
$ java SplitSample
1-2 => ["1", "2"]
1--2 => ["1", "", "2"]
1- => ["1"]
1-- => ["1"]
-2 => ["", "2"]
--2 => ["", "", "2"]
- => []
-- => []
--- => []
1-2-3 => ["1", "2", "3"]
-1-2-3- => ["", "1", "2", "3"]
-1--2--3- => ["", "1", "", "2", "", "3"]

Rubyのサンプルコードと実行結果。


$ ruby -v
ruby 1.8.7 (2010-12-23 patchlevel 330) [i686-darwin10]
 
$ cat ./split_sample.rb 
targets = [
  '1-2',
  '1--2',
  '1-',
  '1--',
  '-2',
  '--2',
  '-',
  '--',
  '---',
  '1-2-3',
  '-1-2-3-',
  '-1--2--3-',
]
 
targets.each{|s|
  a = s.split('-')
  puts "#{s} => #{a.inspect}" 
}
 
$ ruby ./split_sample.rb 
1-2 => ["1", "2"]
1--2 => ["1", "", "2"]
1- => ["1"]
1-- => ["1"]
-2 => ["", "2"]
--2 => ["", "", "2"]
- => []
-- => []
--- => []
1-2-3 => ["1", "2", "3"]
-1-2-3- => ["", "1", "2", "3"]
-1--2--3- => ["", "1", "", "2", "", "3"]

まったく同じ結果に。

tags: java ruby

Posted by NI-Lab. (@nilab)