如何将Ruby中的字符串拆分为一行代码中的两个变量?

时间:2016-12-20 13:15:32

标签: ruby string split

在Ruby中,如何在一行代码中将字符串拆分为两个变量?

示例:

目标:将字符串s拆分为变量ab,以便a = 'A'b = {{1} }。

123

如何在一行代码中实现相同的结果?

3 个答案:

答案 0 :(得分:6)

有许多方法,例如在这种特殊情况下positive lookbehind会这样做:

a, b = 'A123'.split(/(?<=\D)/)
#⇒ ["A", "123"]

具有限制切片的正向前瞻:

'AB123'.split(/(?=\d)/, 2)
#⇒ ["AB", "123"]

按指数:

[0..1, 2..-1].map &'AB123'.method(:[])
#⇒ ["AB", "123"]

答案 1 :(得分:4)

您可以scan将字符串标记为数字和非数字/\d+|\D+/,而不是使用前瞻和后瞻分割:

"AB123".scan(/\d+|\D+/)
# => [AB, 123]

模式匹配

  • \d+ - 一位或多位
  • | - 或
  • \D+ - 除数字以外的1个或多个字符。

答案 2 :(得分:1)

另一个来自MatchData#to_a

var resultSet = new TestData.TestDataSet();
using (var reader = new StringReader(Resources.TestDataSetData))
{
    resultSet.ReadXml(reader);
}

var testMock = new Mock<DbCommand>();

testMock.Setup(x => x.ExecuteReader())
    .Returns(resultSet.CreateDataReader);

testMock.Setup(x => x.ExecuteReaderAsync())
    .ReturnsAsync(resultSet.CreateDataReader);