我认为scala存在空白问题?

时间:2010-06-01 03:00:46

标签: scala command whitespace lift

我正在尝试编写一个脚本,以便更快地生成Lift项目,但我相信我遇到了一个空白问题。

val strLiftGen = "mvn archetype:generate -U\-DarchetypeGroupId=net.liftweb\
 -DarchetypeArtifactId=lift-archetype-blank\
 -DarchetypeVersion=1.0\
 -DremoteRepositories=http://scala-tools.org/repo-releases\-DgroupId=" + args(0)"\-DartifactId=" + args(1)"\-Dversion=1.0-SNAPSHOT */"

任何人都想用智慧的棍子打击新手并告诉我处理这样长串的聪明方法?

2 个答案:

答案 0 :(得分:4)

您的示例中存在多个语法错误("\ "并且在+args(0)后丢失args(1)。(复制粘贴错误?)。这是您可以执行的操作:

val strLiftGen =
  """mvn
  archetype:generate
  -U
  -DarchetypeGroupId=net.liftweb
  -DarchetypeArtifactId=lift-archetype-blank
  -DarchetypeVersion=1.0
  -DremoteRepositories=http://scala-tools.org/repo-releases
  -DgroupId=%s
  -DartifactId=%s
  -Dversion=1.0-SNAPSHOT"""

val cleanStr = strLiftGen.replace('\n',' ').replaceAll("\\s{2,}"," ").trim
println(cleanStr.format(args(0), args(1)))

那么你如何处理参数之间的空格取决于你将如何执行命令。

答案 1 :(得分:2)

如果你试图获得一些带有反斜杠转义空格的字符串,那么你需要加倍反斜杠。就目前而言,你所展示的内容实际上并不会编译,因为单个反斜杠可能不会立即在空格之前。

您可能希望使用三引号字符串,该字符串暂停所有反斜杠处理并允许嵌入换行符。反斜杠永远不需要在三引号字符串中加倍。