我是新手,试图将字符串的值替换为新值而感到震惊。
Data in URL="a=1,
b=2,
c=3"
var header="a,b,c"
for (line <- Source.fromURL("/u/r/l").getLines) {
if(header.contains(line.split("=")(0).toLowerCase().trim)) {
header.replaceAll(line.split("=")(0).toLowerCase().trim,line.split("=")(1).toLowerCase().trim)
}
}
我希望最终输出为
println(header)
1,2,3
在运行此程序时,如何仍能获得"a,b,c"
答案 0 :(得分:1)
您所需要的只是分配为
for (line <- Source.fromURL("/u/r/l").getLines) {
if(header.contains(line.split("=")(0).toLowerCase().trim)) {
header = header.replaceAll(line.split("=")(0).toLowerCase().trim,line.split("=")(1).toLowerCase().trim)
}
}
您可以像
一样在功能上做更多Source.fromURL("/u/r/l").getLines.map(_.split("=")).map(line => header = header.replaceAll(line(0).toLowerCase().trim,line(1).toLowerCase().trim))
进一步,您可以将网址更改为Map并将映射应用为
val kv = Source.fromURL("/u/r/l").getLines.map(_.split("=")).map(x => (x(0).toLowerCase.trim, x(1).toLowerCase.trim)).toMap
header = header.split(",").map(x => if(kv.keySet.contains(x)) kv(x);else x).mkString(",")