在Ruby中,如何在一行代码中将字符串拆分为两个变量?
示例:
目标:将字符串s
拆分为变量a
和b
,以便a
= 'A'
和b
= {{1} }。
123
如何在一行代码中实现相同的结果?
答案 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);