Думаю, у вас проблема с пробелами в скале? - PullRequest
1 голос
/ 01 июня 2010

Я пытаюсь написать скрипт, чтобы ускорить генерацию 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 ]

4 голосов
/ 01 июня 2010

В вашем примере несколько синтаксических ошибок ("\ " и пропущенных + после 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)))

Тогда то, как вы будете обрабатывать пробелы между аргументами, немного зависит от того, как вы будете выполнять команду.

2 голосов
/ 01 июня 2010

Если вы пытаетесь получить строку с некоторыми вхождениями пробела с обратной косой чертой, вам нужно удвоить обратную косую черту. В сущности, то, что вы показали, на самом деле не будет компилироваться, потому что одиночная обратная косая черта не может сразу предшествовать пробелу.

Возможно, вы захотите использовать строку в тройных кавычках, которая приостанавливает всю обратную косую черту и допускает встроенные переводы строки. Обратные косые черты никогда не должны быть удвоены в строках с тройными кавычками.

...