1

我正在尝试编写一个脚本来更快地生成 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 */"

有谁愿意用智慧之杖打新人并告诉我处理这样长字符串的聪明方法?

4

2 回答 2

4

您的示例中有多个语法错误(并且在and之后"\ "缺少。(复制粘贴错误?)。这是您可以执行的操作:+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)))

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

于 2010-06-01T03:29:31.797 回答
2

如果您试图获得一个包含一些反斜杠转义空格的字符串,那么您需要将反斜杠加倍。就目前而言,您所显示的内容实际上不会编译,因为单个反斜杠可能不会紧跟在空格之前。

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

于 2010-06-01T03:19:34.557 回答