URL parser


Submit solution

Points: 10
Time limit: 5.0s
Memory limit: 256M

Author:
Problem type
Allowed languages
C#, Go, Java

Una URL consisteix en 8 components:

  • scheme
  • user
  • password
  • host
  • port
  • path
  • query
  • fragment

Excepte scheme i path, la resta són opcionals.

Un exemple d'una URL completa amb els 8 components, podria ser aquest:

image

Es desitja crear una macro que prengui una URL i la descomposi en els seus components, generant codi Java amb les variables i els seus valors corresponents.

Input Format

La entrada consta d'una URL amb els 8 components.

Constraints

El format de la URL és vàlid.

Output Format

S'imprimirà el codi Java generat, que contingui una variable per a cada component de la URL, amb el seu valor assignat.

Les variables , , , i són de tipus String.

La variable es de tipus int.

Les variables i són de tipus String[], inicialitzats amb els seus segments.

Test Case 1

Input
http://user:pass@example.com:3000/docs/api/index.php?version=7&lang=java#strings
Output
String scheme = "http";
String user = "user";
String password = "pass";
String host = "example.com";
int port = 3000;
String[] path = {"docs", "api", "index.php"};
String[] query = {"version=7", "lang=java"};
String fragment = "strings";

Test Case 2

Input
http://richard:stallman@www.gnu.org:80/philosophy/free-sw.html?r=1.663#history
Output
String scheme = "http";
String user = "richard";
String password = "stallman";
String host = "www.gnu.org";
int port = 80;
String[] path = {"philosophy", "free-sw.html"};
String[] query = {"r=1.663"};
String fragment = "history";

Test Case 3

Input
https://linus:torvalds@git-scm.com:8080/downloads/linux?v=2.21&dev=true#arch
Output
String scheme = "https";
String user = "linus";
String password = "torvalds";
String host = "git-scm.com";
int port = 8080;
String[] path = {"downloads", "linux"};
String[] query = {"v=2.21", "dev=true"};
String fragment = "arch";

Test Case 4

Input
https://linus:torvalds@git-scm.com:8080/downloads/gnu/linux?v=2.21&dev=true#arch
Output
String scheme = "https";
String user = "linus";
String password = "torvalds";
String host = "git-scm.com";
int port = 8080;
String[] path = {"downloads", "gnu", "linux"};
String[] query = {"v=2.21", "dev=true"};
String fragment = "arch";

Authorship: Gerard Falcó

CC BY-NC-SA 4.0