¿Hay alguna manera de extraer una subcadena de una propiedad Ant y colocar esa subcadena en su propiedad?Cómo extraer una subcadena en Ant
Respuesta
utilizo scriptdef para crear una etiqueta JavaScript para subcadena, por exemple:
<project>
<scriptdef name="substring" language="javascript">
<attribute name="text" />
<attribute name="start" />
<attribute name="end" />
<attribute name="property" />
<![CDATA[
var text = attributes.get("text");
var start = attributes.get("start");
var end = attributes.get("end") || text.length();
project.setProperty(attributes.get("property"), text.substring(start, end));
]]>
</scriptdef>
........
<target ...>
<substring text="asdfasdfasdf" start="2" end="10" property="subtext" />
<echo message="subtext = ${subtext}" />
</target>
</project>
Me gustaría ir con la fuerza bruta y escribir una costumbre tarea Ant:
public class SubstringTask extends Task {
public void execute() throws BuildException {
String input = getProject().getProperty("oldproperty");
String output = process(input);
getProject().setProperty("newproperty", output);
}
}
lo que queda es para implementar el String process(String)
y añadir un par de fijadores (por ejemplo, para los valores oldproperty
y newproperty
)
Puedes probar usando PropertyRegex from Ant-conrtib.
<propertyregex property="destinationProperty"
input="${sourceProperty}"
regexp="regexToMatchSubstring"
select="\1"
casesensitive="false" />
Nota adicional: en caso de que esto se haga dinámicamente en un bucle, use 'override =" true "' para anular cualquier valor anterior. – robinst
i usaría tarea secuencia de comandos para ese propósito, prefiero rubí, ejemplo cortar los primeros 3 caracteres =
<project>
<property name="mystring" value="foobarfoobaz"/>
<target name="main">
<script language="ruby">
$project.setProperty 'mystring', $mystring[3..-1]
</script>
<echo>$${mystring} == ${mystring}</echo>
</target>
</project>
salida =
main:
[echo] ${mystring} == barfoobaz
utilizando el api hormiga con El método project.setProperty() en una propiedad existente lo sobreescribirá, de esa manera usted puede evitar el comportamiento estándar de la hormiga , significa propert IES Una vez establecido son inmutables
Hola, tengo este error: No se puede crear el motor de script javax para ruby –
Jarod, necesitas bsf.jar (http://jakarta.apache.org/bsf) y jruby.jar (http: //www.jruby .org), consulte también http://ant.apache.org/manual/install.html#librarydependencies, tenga en cuenta que el enlace a jruby es incorrecto en esa página. – Rebse
oh gracias Rubse –
Como yo prefiero usar la vainilla Hormiga, utilizo un archivo temporal. Funciona en todas partes y puede aprovechar replaceregex para deshacerse de la parte de la cadena que no desea. Ejemplo de munging mensajes de Git:
<exec executable="git" output="${git.describe.file}" errorproperty="git.error" failonerror="true">
<arg value="describe"/>
<arg value="--tags" />
<arg value="--abbrev=0" />
</exec>
<loadfile srcfile="${git.describe.file}" property="git.workspace.specification.version">
<filterchain>
<headfilter lines="1" skip="0"/>
<tokenfilter>
<replaceregex pattern="\.[0-9]+$" replace="" flags="gi"/>
</tokenfilter>
<striplinebreaks/>
</filterchain>
</loadfile>
Si está tratando con una propiedad para empezar, puede evitar el archivo haciendo algo como
¡Gracias! Utilicé '
- 1. extraer una subcadena en C
- 2. ¿Cómo extraer una subcadena de .NET RegEx?
- 3. Latex - extraer caracteres de subcadena/ignorar
- 4. ¿Cómo extraer una subcadena de una cadena en PHP hasta que alcanza cierto carácter?
- 5. Cómo extraer subcadena entre paréntesis utilizando patrón de expresión
- 6. Extienda una subcadena usando PowerShell
- 7. cómo extraer la subcadena de una cadena hasta que encuentre una coma C# asp.net
- 8. Sustituir una subcadena con otra subcadena
- 9. Javascript - cómo reemplazar una subcadena?
- 10. ¿Cómo buscar una subcadena en SQLite?
- 11. ¿Cómo puedo extraer subcadenas de una cadena en Perl?
- 12. Subcadena con índice inverso
- 13. Cómo determinar si es una subcadena en una cadena diferente
- 14. iPhone: ¿Cómo comprobar si existe una subcadena en una cadena?
- 15. IOS: NSString recuperando una subcadena de una cadena
- 16. Cómo reemplazar subcadena en Javascript?
- 17. Extraiga una subcadena de una cadena en Ruby usando una expresión regular
- 18. Coincidencia de una subcadena opcional en una expresión regular
- 19. ¿Cómo podemos extraer subcadena de la cadena por la posición y el separador
- 20. ¿Cómo obtener una subcadena de texto?
- 21. Buscar subcadena en una cadena usando C#
- 22. Compruebe si una cadena contiene una subcadena
- 23. Cómo verificar la versión de Ant en el script Ant
- 24. Dividir en la subcadena
- 25. Buscar una subcadena en una cadena en Oracle sin LIKE
- 26. Encontrar una subcadena en un objeto NSString
- 27. Buscar subcadena en una lista de cadenas
- 28. ¿Eliminar subcadena de una cadena?
- 29. ¿Cómo puedo reemplazar una coincidencia de subcadena regex en Javascript?
- 30. ¿Cómo reemplazar la última aparición de una subcadena en ruby?
¿Puede ser más específico acerca de lo que está tratando de hacer? ¿Por qué no tendría más sentido definir una propiedad para mantener el valor del que dependes y usarlo en varios lugares? Si sus propiedades Ant cambian con la frecuencia suficiente como para que deba reaccionar programáticamente ante ellas, es posible que esté haciendo algo incorrecto. – PanCrit