【发布时间】:2019-12-02 07:39:37
【问题描述】:
我有一个正在尝试测试的方法
public static string BySpace(string s, int position)
{
return s.Split()[position];
}
我周围有一个测试功能
[Theory]
[InlineData("a b c d")]
[InlineData(" a b c d")]
[InlineData("a b c d ")]
[InlineData("a b c d")]
[InlineData(" a b c d ")]
public void TestParseToList(string s)
{
Assert.Equal("a", Util.BySpace(s, 0));
Assert.Equal("b", Util.BySpace(s, 1));
Assert.Equal("c", Util.BySpace(s, 2));
Assert.Equal("d", Util.BySpace(s, 3));
}
一堆内联数据测试失败。可以看出我在玩 Space & Tab。
想要的效果:取一个字符串,用任意空格分割
请问我错过了什么?如何获取一个字符串并按空格分割它
我尝试了以下所有方法都无济于事
// return s.Split()[position];
// return s.Split(' ')[position];
// return s.Split("\\s+")[position]; <----- i had high hopes for this one
// return s.Split(null)[position];
// return s.Split(new char[0])[position];
creturn s.Split(new char[0], StringSplitOptions.RemoveEmptyEntries)[position]);
【问题讨论】:
-
return System.Text.RegularExpressions.Regex.Split( s, @"\s+"); -
谢谢@Aggragoth。为什么常规拆分不起作用?
-
据我所知,您拥有的基于正则表达式的拆分,即。
s.Split("\\s+")不是 C# 中的功能,但它在 java 中。如果您还试图排除任一侧的空格,我可能会修剪字符串的每一侧以获得空格 -
@Aggragoth 你抓住了我。恢复 Java 的家伙在这里自学 c# :)