所以我正在研究一个项目,由于某些原因仅限于java squawk 1.4。因此,String
类不包含标题中的四种方法。我需要在我的程序中使用这些方法,并得出结论,我必须创建一个Util类,它自己执行这些方法的功能。
首先,它存在于某个地方吗?显然,我的第一反应是调查从String
类复制源代码,但这些方法的依赖性对我来说太深了。
其次,我无法复制split(String regex)
和replace(CharSequence target, CharSequence replacement)
的行为。 contains(String)
和isEmpty()
很明显很容易,但我在编写其他代码时遇到了麻烦。
现在,我有split
工作(虽然它的工作方式与jdk 7不同,但我不想得到错误)。
public static String[] split(String string, char split) {
String[] s = new String[0];
int count = 0;
for (int x = 0; x < string.length(); x++) {
if (string.charAt(x) == split) {
String[] tmp = s;
s = new String[++count];
System.arraycopy(tmp, 0, s, 0, tmp.length);
s[count - 1] = string.substring(x).substring(1);
if (contains(s[count - 1], split + "")) {
s[count - 1] = s[count - 1].substring(0, s[count - 1].indexOf(split));
}
}
}
return s.length == 0 ? new String[]{string} : s;
}
Replace
要难得多,而且我已经尝试了好几个小时了。这似乎是谷歌/档案馆从未冒险过的问题。
答案 0 :(得分:0)
制作方法......
public static boolean isEmpty(String string) {
return string.length() == 0;
}
public static String[] split(String string, char split) {
return _split(new String[0], string, split);
}
private static String[] _split(String[] current, String string, char split) {
if (isEmpty(string)) {
return current;
}
String[] tmp = current;
current = new String[tmp.length + 1];
System.arraycopy(tmp, 0, current, 0, tmp.length);
if (contains(string, split + "")) {
current[current.length - 1] = string.substring(0, string.indexOf(split));
string = string.substring(string.indexOf(split) + 1);
} else {
current[current.length - 1] = string;
string = "";
}
return _split(current, string, split);
}
public static boolean contains(String string, String contains) {
return string.indexOf(contains) > -1;
}
public static String replace(String string, char replace, String replacement) {
String[] s = split(string, replace);
String tmp = "";
for (int x = 0; x < s.length; x++) {
if (contains(s[x], replace + "")) {
tmp += s[x].substring(1);
} else {
tmp += s[x];
}
}
return tmp;
}