我知道这个问题很愚蠢,但在一次采访中,我被告知要实现trim()方法,除了substring()方法之外,不要使用String类中的任何方法。
我使用toCharArray()来解决这个问题,然后识别字符串的第一个和最后一个有效字符。但是被告知不要使用toCharArray()方法。
有人能建议一些方法去做吗。
Object类的Overriden方法可以像equals()和hashCode()那样被允许。
发布于 2016-02-05 21:31:33
String untrimmed = " some string ";
String trimmed = "";
String innerSpaces = "";
boolean wordBoundary = true;
try {
for (int i = 0; ; i++) {
String substr = untrimmed.substring(i, i + 1);
if (!substr.equals(" ") && !substr.equals("\t") &&
!substr.equals("\n") && !substr.equals("\r")) {
trimmed += innerSpaces + substr;
wordBoundary = false;
innerSpaces = "";
}
else if (!wordBoundary) {
innerSpaces += substr;
}
}
}
catch (IndexOutOfBoundsException e) { }
System.out.println(trimmed);发布于 2016-02-05 21:36:56
当然,裁剪结果需要substring。
如果没有任何String方法,就很难在两端找到可能的空间。
遗骸:
这两种方法似乎都是合法的解决方案。我很乐意知道他们的解决方案--或者说这是一个不可能回答的问题。
发布于 2016-02-05 21:44:48
但这个问题还是很愚蠢:
public static String trim(String s) {
StringBuilder sb = new StringBuilder(s);
int start, end;
for (start = 0; start < sb.length() && Character.isWhitespace(sb.charAt(start)); start++);
for (end = sb.length() - 1; end > start && Character.isWhitespace(sb.charAt(end)); end--);
return sb.substring(start, end + 1);
}
System.out.println(trim(" \n \t trim me \t "));https://stackoverflow.com/questions/35233732
复制相似问题