X-Git-Url: http://plrg.eecs.uci.edu/git/?a=blobdiff_plain;f=Robust%2Fsrc%2FClassLibrary%2FString.java;h=53b9cec6bdae2d3060db4504c5fb1b961a5bd59c;hb=d45bb251bdc1196d7848094fa2ccd566b39e021c;hp=211318c0e8d80be2abd0a6694ed634b97c8c06df;hpb=dfd5de5dced5a654c94d2b0d3fe7603875e5fb27;p=IRC.git diff --git a/Robust/src/ClassLibrary/String.java b/Robust/src/ClassLibrary/String.java index 211318c0..53b9cec6 100644 --- a/Robust/src/ClassLibrary/String.java +++ b/Robust/src/ClassLibrary/String.java @@ -1,147 +1,516 @@ public class String { - char value[]; - int count; - int offset; + char value[]; + int count; + int offset; + private int cachedHashcode; - private String() { - } + private String() { + } - public String(char str[]) { - char charstr[]=new char[str.length]; - for(int i=0;i(str.length-offset)) + length=str.length-offset; + char charstr[]=new char[length]; + for(int i=0; i(str.length)) + length=str.length; + char charstr[]=new char[length]; + for(int i=0; i(str.length-offset)) + length=str.length-offset; + char charstr[]=new char[length]; + for(int i=0; ithis.count||endIndex>this.count||beginIndex>endIndex) { + // FIXME + System.printString("Index error: "+beginIndex+" "+endIndex+" "+count+"\n"+this); } + str.value=this.value; + str.count=endIndex-beginIndex; + str.offset=this.offset+beginIndex; + return str; + } + + public String subString(int beginIndex) { + return this.subString(beginIndex, this.count); + } + + public int lastindexOf(int ch) { + return this.lastindexOf(ch, count - 1); + } - public String(String str) { - this.value=str.value; - this.count=str.count; - this.offset=str.offset; + public int lastIndexOf(char ch) { + return this.lastindexOf((int)ch, count - 1); + } + + public static String concat2(String s1, String s2) { + if (s1==null) + return "null".concat(s2); + else + return s1.concat(s2); + } + + public String concat(String str) { + String newstr=new String(); + newstr.count=this.count+str.count; + char charstr[]=new char[newstr.count]; + newstr.value=charstr; + newstr.offset=0; + for(int i=0; i0; i--) + if (this.charAt(i)==ch) + return i; + return -1; + } - public String(StringBuffer strbuf) { - value=new char[strbuf.length()]; - count=strbuf.length(); - offset=0; - for(int i=0;ithis.count||endIndex>this.count||beginIndex>endIndex) { - // FIXME - } - str.value=this.value; - str.count=endIndex-beginIndex; - str.offset=this.offset+beginIndex; - return str; + public String toUpperCase() { + char[] buffer=new char[count]; + for(int i=0; i='a'&&x<='z') { + x=(char) ((x-'a')+'A'); + } + buffer[i]=x; } + return new String(buffer); + } - public String subString(int beginIndex) { - return this.subString(beginIndex, this.count); + public String toLowerCase() { + char[] buffer=new char[count]; + for(int i=0; i='A'&&x<='Z') { + x=(char) ((x-'A')+'a'); + } + buffer[i]=x; } + return new String(buffer); + } + + public int indexOf(int ch) { + return this.indexOf(ch, 0); + } + + public int indexOf(int ch, int fromIndex) { + for(int i=fromIndex; ifromIndex) + k=fromIndex; + for(; k>=0; k--) { + if (regionMatches(k, str, 0, str.count)) + return k; } + return -1; + } + + public int lastIndexOf(String str) { + return lastIndexOf(str, count-str.count); + } + + public boolean startsWith(String str) { + return regionMatches(0, str, 0, str.count); + } + + public boolean startsWith(String str, int toffset) { + return regionMatches(toffset, str, 0, str.count); + } + + public boolean regionMatches(int toffset, String other, int ooffset, int len) { + if (toffset<0 || ooffset <0 || (toffset+len)>count || (ooffset+len)>other.count) + return false; + for(int i=0; i count) || (srcBegin > srcEnd)) { + // FIXME + System.printString("Index error: "+srcBegin+" "+srcEnd+" "+count+"\n"+this); + System.exit(-1); } + int len = srcEnd - srcBegin; + int j = dstBegin; + for(int i=srcBegin; icount || (ooffset+len)>other.count) - return false; - for(int i=0;i='a'&&l<='z') + l=(char)((l-'a')+'A'); + if (r>='a'&&r<='z') + r=(char)((r-'a')+'A'); + if (l!=r) + return false; } + return true; + } - public char[] toCharArray() { - char str[]=new char[count]; - for(int i=0;i 0) || (len < count))?substring(st, len):this; + } + + public boolean matches(String regex) { + System.println("String.matches() is not fully supported"); + return this.equals(regex); + } }