--- /dev/null
+/*
+ * $Id: StringDivider.java,v 1.1 2004-10-05 20:51:57 jsurfer Exp $
+ * Copyright Narushima Hironori. All rights reserved.
+ */
+package net.sourceforge.phpeclipse.wizards.html;
+
+import java.util.Arrays;
+import java.util.regex.Pattern;
+
+public class StringDivider {
+
+ static Pattern tagNameChoosePattern = Pattern.compile("<[\\s/]*(\\w+)\\s*.*>");
+
+ String[] splitRegexpCandidates = {
+ "\t",
+ ",",
+ "\\s",
+ "\\s+",
+ };
+
+ public StringDivider() {
+ }
+
+ public String[][] divide(String content){
+ return divide(content, getDivideSuitedRegexp(content));
+ }
+
+ public String[][] divide(String content, String regexp){
+ String[] lines = content.split("\n");
+ int len = lines.length;
+ String[][] dist = new String[len][];
+
+ int max = Integer.MIN_VALUE;
+ for (int i = 0; i < len; i++) {
+ String line = lines[i];
+ String[] cells = line.split(regexp);
+ dist[i] = cells;
+ if(max < cells.length){
+ max = cells.length;
+ }
+ }
+ for (int i = 0; i < len; i++) {
+ String[] newArray = new String[max];
+ Arrays.fill(newArray, "");
+ System.arraycopy(dist[i], 0, newArray, 0, dist[i].length);
+ dist[i] = newArray;
+ }
+ return dist;
+ }
+
+ public String getDivideSuitedRegexp(String content){
+ String[] lines = content.split("\n");
+
+ String resultRegexp = null;
+ int score = Integer.MAX_VALUE, cellCount = Integer.MIN_VALUE;
+
+ for (int i = 0; i < splitRegexpCandidates.length; i++) {
+ String regexp = splitRegexpCandidates[i];
+ int max = Integer.MIN_VALUE, min = Integer.MAX_VALUE;
+ for (int j = 0; j < lines.length; j++) {
+ String[] vals = lines[j].split(regexp);
+ if(max < vals.length){
+ max = vals.length;
+ }
+ if(min > vals.length){
+ min = vals.length;
+ }
+ }
+ int s = max - min;
+ if( score > s || (score == s && max > cellCount)){
+ cellCount = max;
+ score = s;
+ resultRegexp = regexp;
+ }
+ }
+ return resultRegexp;
+ }
+
+}