1 21 22 package org.armedbear.j; 23 24 import java.util.Vector ; 25 26 public final class ShellTokenizer 27 { 28 private Vector v = new Vector (); 29 private int index; 30 31 public ShellTokenizer(String s) 32 { 33 FastStringBuffer sb = new FastStringBuffer(); 34 char quoteChar = 0; 35 int limit = s.length(); 36 for (int i = 0; i < limit; i++) { 37 char c = s.charAt(i); 38 if (c == '\\') { 39 sb.append(c); 40 if (i < limit-1) { 41 sb.append(s.charAt(++i)); 42 continue; 43 } 44 } else if (quoteChar != 0) { 45 sb.append(c); 46 if (c == quoteChar) 47 quoteChar = 0; 48 } else if (c == '\'' || c == '"') { 49 sb.append(c); 50 quoteChar = c; 51 } else if (c == ' ' || c == '\t' || c == '=') { 52 if (sb.length() > 0) { 53 v.add(sb.toString()); 54 sb.setLength(0); 55 } 56 } else 57 sb.append(c); 58 } 59 if (sb.length() > 0) 60 v.add(sb.toString()); 61 } 62 63 public boolean hasMoreTokens() 64 { 65 return index < v.size(); 66 } 67 68 public String nextToken() 69 { 70 String token = null; 71 if (index < v.size()) 72 token = (String ) v.get(index++); 73 return token; 74 } 75 76 public String lastToken() 77 { 78 String token = null; 79 if (v.size() > 0) 80 token = (String ) v.get(v.size()-1); 81 return token; 82 } 83 } 84 | Popular Tags |