如何确保字符串的子字符串正好n次?

Sor*_*ona 9 java tdd junit assertj

我想检查String是否包含某个子字符串n次.我知道我能做到:

Assertions.assertThat(myString).contains("xyz");

甚至 Assertions.assertThat(myString).containsOnlyOnce("xyz");

但我怎样才能确保这一次?

我尝试过类似的东西:

Assertions.assertThat(myString).areExactly(n, myString.contains("xyz")); 但遗憾的是这不可编辑.

有任何想法吗?

Rah*_*thi 9

您可能正在寻找StringUtils.countMatches

计算一个String在另一个String中出现的次数

  • @Kayaman 我认为他实际上指的是 `assertj` 库(他用来测试断言的库),而不是 `aspectj`。:-) 从这个角度来看(并查看 `assertj` 已经实现了多少不同的断言),除了 `containsOnlyOnce(String expected)` 之外,还有 `containsTimes(int n, String expected)` 会很方便. (3认同)

小智 6

您可以使用这样的正则表达式,其中测试字符串“myString”有子字符串“xyz”n 次。

Assertions.assertThat(myString).containsPattern("(xyz.*?){n}");
Run Code Online (Sandbox Code Playgroud)

您可以将 n 替换为要测试的子字符串的数量。