我有一个来自HTTP请求的HTML元素,如下所示:
<input type="radio" data-trip="0" id="fareRadioId_" name="pricefare" value="H15CNGE~SHATSA~220420150955~3332|H15CNGE~TSASHA~270420150715~338" class="pricefare" data-toggle="radio" checked="checked">
我习惯从CSS选择中提取一个值,如下所示:
.check(css("input#fareRadioId_0.select_departure", "value").saveAs("departSellKey"))
但是在我选择了上面的元素中的值后,我想将它分成几部分,然后才能将它分成两部分:#15; H15CNGE~SHATSA~220420150955~3332 | H15CNGE~TSASHA~270420150715~338&#34; ,拆分字符为&#34; |&#34;,并将这两个部分保存到具有2个不同名称的会话中。这可能吗?
我对加特林和斯卡拉来说还是一个新手,所以现在这有点高于我的头脑。任何帮助将不胜感激。
答案 0 :(得分:2)
我不确定您是否能够使用不同的名称保存这两个部分,但是执行拆分并将结果存储为Seq
相当容易,之后您可以使用索引等。
您需要做的是在支票中插入合适的transformer:
.check(css("...").transform(_.split('|').toSeq).saveAs("sellKeys"))
这会从String
表达式css()
开始,在split()
上创建一个Array[String]
,然后将其转换为Seq
因为他们更适合使用: - )
然后Seq
会保存到sellKeys
,所以稍后您可以执行以下操作:(愚蠢的例子):
.exec( session => {
val keys = session("sellKeys").as[Seq[String]]
println(s"keys are ${keys.mkString(" and ")}")
println(s"the first key is ${keys.head}")
session
}
)
输出:
keys are H15CNGE~SHATSA~220420150955~3332 and H15CNGE~TSASHA~270420150715~338
the first key is H15CNGE~SHATSA~220420150955~3332