0

我正在尝试测试这种方法:

public static String trimExtraSpace(String str) {
    str.trim().replaceAll(" +", " ");
    return str;
}

我拥有的 Junit 测试用例:

@Test
public void testTrimExtraSpace() {
    String str = " foo \n   b  a    r ";
    assertEquals("foo \n b a r", Strings.trimExtraSpace(str));      
}

结果: 截屏

为什么这不想工作?

4

3 回答 3

1

我猜从 API 文档 trim() 方法返回一个 String 实例,您需要捕获该实例并对其进行操作,然后返回(返回的)实例。

于 2013-08-21T07:34:19.857 回答
1

Strings 在 Java 中是不可变的。你必须做这样的事情:

public static String trimExtraSpace(String str) {
    String trimmedStr = str.trim().replaceAll(" +", " ");
    return trimmedStr;
}

您可能还必须更改replaceAll(我无法测试)中使用的正则表达式:

String trimmedStr = str.trim().replaceAll("\\s+", " ");
于 2013-08-21T07:36:14.473 回答
0

我想你应该使用正则表达式。在这种情况下:

urString = yourString.replaceAll("\\s+", " ");

玩得开心

于 2013-08-21T07:35:19.160 回答