/**
use as java.lang.String for java programmer!
becasuse String is a Object of JavaScirpt,we named it as JavaString!
String is used most commonly in JavaScript
we can use JavaString in ArrayList,HashMap,HashSet etc!
*/
function testJavaString(){
alert("JavaStrint test begin:");
try{
var javaStr=new JavaString("Hello World");
assert(javaStr.length()==11);
assert(javaStr.charAt(2)=='l');
assert(javaStr.equals(new JavaString("Hello World")));
assert(javaStr.equalsIgnoreCase("hello world"));
assert(javaStr.compareTo("Hello")>0);
assert(javaStr.compareTo("MX")<0);
assert(javaStr.compareTo("Hello World")==0);
assert(javaStr.startsWith("Hello "));
assert(javaStr.endsWith("orld"));
assert(javaStr.indexOf("o")==4);
assert(javaStr.lastIndexOf("o")==7);
assert(javaStr.concat(" WSG").equals(new JavaString("Hello World WSG")));
assert(javaStr.replace("o","").equals(new JavaString("Hell World")));
assert(javaStr.replaceAll("o","").equals(new JavaString("Hell Wrld")));
assert(javaStr.matches("Hell.+"));
assert(javaStr.split(" ").length==2);
assert(javaStr.split("o")[1]==" W");
assert(javaStr.toCharArray().length==11);
assert(javaStr.toCharArray()[4]=="o");
assert(javaStr.toString()=="Hello World");
assert(javaStr.toUpperCase().equals(new JavaString("HELLO WORLD")));
assert(javaStr.toLowerCase().equals(new JavaString("hello world")));
}
catch(e){
alert(e);
}
alert("JavaString test end");
}
function JavaString(val){
private:
this.value=val;
public:
this.length=length;
function length(){
return this.value.length;
}
this.charAt=charAt;
function charAt(index){
return this.value.charAt(index);
}
this.equals=equals;
function equals(str){
return this.value==str.value;
}
this.equalsIgnoreCase=equalsIgnoreCase;
function equalsIgnoreCase(str){
return this.value.toUpperCase()==str.toUpperCase();
}
this.compareTo=compareTo;
function compareTo(str){
if(this.value==str.value) return 0;
else if(this.value>str.value) return 1;
else return -1;
}
this.compareToIgnoreCase=compareToIgnoreCase;
function compareToIgnoreCase(str){
var a=this.value.toUpperCase();
var b=str.toUpperCase();
if(a==b) return 0;
else if(a>b) return 1;
else return -1;
}
this.startsWith=startsWith;
function startsWith(prefix){
return this.value.substring(0,prefix.length)==prefix;
}
this.endsWith=endsWith;
function endsWith(suffix){
return this.value.substring(this.value.length-suffix.length)==suffix;
}
this.hashCode=hashCode;
function hashCode(){
var h=0;
for (var i = 0; i < this.value.length; i++) {
h = 31*h + this.value.charCodeAt(i);
}
return h;
}
this.indexOf=indexOf;
function indexOf(ch){
return this.value.indexOf(ch);
}
this.lastIndexOf=lastIndexOf;
function lastIndexOf(ch){
return this.value.lastIndexOf(ch);
}
this.substring=substring;
function substring(){
var args=substring.arguments;
var begin=args[0];
if(args.length>1) return new JavaString(this.value.substring(begin,args[1]));
else return new JavaString(this.value.substring(begin));
}
this.concat=concat;
function concat(str){
return new JavaString(this.value+str);
}
this.replace=replace;
function replace(oldStr,newStr){
return new JavaString(this.value.replace(oldStr,newStr));
}
this.matches=matches;
function matches(regex){
return this.value.match(regex)!=null;
}
this.replaceFirst=replaceFirst;
function replaceFirst(regex,replacement){
return new JavaString(this.value.replace(regex,replacement));
}
this.replaceAll=replaceAll;
function replaceAll(regex,replacement){
var va=this.value;
var temp=va.replace(regex,replacement);
while(temp!=va){
va=temp;
temp=va.replace(regex,replacement);
}
return new JavaString(va);
}
this.split=split;
function split(sep){
return this.value.split(sep);
}
this.toLowerCase=toLowerCase;
function toLowerCase(){
return new JavaString(this.value.toLowerCase());
}
this.toUpperCase=toUpperCase;
function toUpperCase(){
return new JavaString(this.value.toUpperCase());
}
this.toCharArray=toCharArray;
function toCharArray(){
var charArr=new Array();
for(var i=0;i<this.value.length;i++) charArr[i]=this.value.charAt(i);
return charArr;
}
this.toString=toString;
function toString(){
return this.value;
}
}