tiene una cadena como A = B & C = D & E = F, ¿cómo analizarla en el mapa?Cómo analizar la cadena en el mapa
8
A
Respuesta
23
me gustaría utilizar dividida
String text = "A=B&C=D&E=F";
Map<String, String> map = new LinkedHashMap<String, String>();
for(String keyValue : text.split(" *& *")) {
String[] pairs = keyValue.split(" *= *", 2);
map.put(pairs[0], pairs.length == 1 ? "" : pairs[1]);
}
de edición proporciona espacios acolchadas y un valor con un =
o ningún valor. p.ej.
A = minus- & C=equals= & E==F
1
String t = A=B&C=D&E=F;
Map map = new HashMap();
String[] pairs = t.split("&");
//TODO 1) Learn generis 2) Use gnerics
for (String pair : pairs)
{
String[] kv = pair.split("=");
map.put(kv[0], kv[1]);
}
2
dividir la cadena (ya sea usando un StringTokenizer
o String.split()
) en '&'. En cada token solo se divide nuevamente en '='. Use la primera parte como la clave y la segunda parte como el valor.
También se puede hacer uso de una expresión regular, pero el problema es lo suficientemente simple para StringTokenizer
.
5
public class TestMapParser {
@Test
public void testParsing() {
Map<String, String> map = parseMap("A=B&C=D&E=F");
Assert.assertTrue("contains key", map.containsKey("A"));
Assert.assertEquals("contains value", "B", map.get("A"));
Assert.assertTrue("contains key", map.containsKey("C"));
Assert.assertEquals("contains value", "D", map.get("C"));
Assert.assertTrue("contains key", map.containsKey("E"));
Assert.assertEquals("contains value", "F", map.get("E"));
}
private Map<String, String> parseMap(final String input) {
final Map<String, String> map = new HashMap<String, String>();
for (String pair : input.split("&")) {
String[] kv = pair.split("=");
map.put(kv[0], kv[1]);
}
return map;
}
}
4
sólo tiene que utilizar la guayaba Splitter
String src="A=B&C=D&E=F";
Map map= Splitter.on('&').withKeyValueSeparator('=').split(src);
Cuestiones relacionadas
- 1. cadena Analizar en javascript
- 2. analizar la cadena de DateTime en C#
- 3. Cómo analizar una cadena JSON en Delphi?
- 4. analizar la cadena de TimeSpan
- 5. Cómo analizar una cadena en JavaScript?
- 6. Cómo analizar una cadena XML en Qt
- 7. cadena Convertir a entero en el mapa()
- 8. cómo analizar la cadena a int en javascript
- 9. Cómo analizar la cadena de fecha hasta la fecha?
- 10. PHP Analizar la cadena de fecha
- 11. Cómo analizar una cadena de cookies
- 12. analizar la cadena de enumeración de tipo
- 13. analizar cadena html con jquery
- 14. javascript: cómo analizar una cadena de fecha
- 15. php cadena de analizar XML
- 16. Cómo analizar una cadena sin expresiones regulares
- 17. ASP.NET MVC: cómo analizar la cadena url para obtener RouteData
- 18. Cómo analizar un mapa (foreach) en el mismo orden en que lo creé (JAVA)
- 19. ¿Analizar cadena en una estructura de árbol?
- 20. cómo analizar la cadena de agente de usuario? python
- 21. Cómo analizar una cadena en un objeto DateTime en Perl?
- 22. Analizar cadena hasta la fecha con diferente formato en Java
- 23. analizar una cadena xml en java?
- 24. Cómo analizar una cadena JSON en JsonNode en Jackson?
- 25. Analizar cadena en una consulta LINQ
- 26. Analizar cadena en formato HH.mm a TimeSpan
- 27. Cómo convertir el mapa de bits a una cadena Base64?
- 28. Cómo analizar una cadena de lógica booleana en PHP
- 29. Cómo analizar una cadena de duración en segundos con Javascript?
- 30. ¿Cómo puedo analizar una cadena HTML en Java?
+1. En proceso de escribir un código idéntico. Depende en parte de la cantidad de error que se necesita para verificar el código. Es este código de juguete? ¿Esto necesita copiar con entrada mal formada, etc.? El código aquí le dará a arrayIndexException si no hay '=' por ejemplo, pero eso puede estar bien en el escenario. –
Manejará un '=' en el valor en lugar de cortarlo;) –
@Tom, Gracias, agregó un poco de manejo de errores. –