首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用只使用substring()方法在java中实现trim()方法

如何使用只使用substring()方法在java中实现trim()方法
EN

Stack Overflow用户
提问于 2016-02-05 21:20:50
回答 6查看 2.4K关注 0票数 3

我知道这个问题很愚蠢,但在一次采访中,我被告知要实现trim()方法,除了substring()方法之外,不要使用String类中的任何方法。

我使用toCharArray()来解决这个问题,然后识别字符串的第一个和最后一个有效字符。但是被告知不要使用toCharArray()方法。

有人能建议一些方法去做吗。

Object类的Overriden方法可以像equals()和hashCode()那样被允许。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2016-02-05 21:31:33

代码语言:javascript
复制
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);
票数 5
EN

Stack Overflow用户

发布于 2016-02-05 21:36:56

当然,裁剪结果需要substring

如果没有任何String方法,就很难在两端找到可能的空间。

遗骸:

  1. 外部装卸: 某种形式的 模式= Pattern.compile("\s*(\S*)\s*");//模式不确定Matcher m= pattern.matcher( string );string= m.matches()?m.group(1):string; 或者: Set set0 =新HashSet<>();set0.add(string);Set =新HashSet<>();尝试{ set.add(“”+ string.substring(1));if (set0.include( set )){.} (IndexOutOfRangeException e) {.}
  2. 使用超类字符串的方法。然而,没有人不受字符串本身的影响。也许允许采取以下措施: CharSequence cs = string;//使用cs.charAt或其他什么

这两种方法似乎都是合法的解决方案。我很乐意知道他们的解决方案--或者说这是一个不可能回答的问题。

票数 4
EN

Stack Overflow用户

发布于 2016-02-05 21:44:48

但这个问题还是很愚蠢:

代码语言:javascript
复制
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 "));
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35233732

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档