/**
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;
}
}