Hola de nuevo, cambiando el indexOf("x", offset) por indexOf(";", offset) ya ha funcionado a la perfección, no sabía que eso servía para delimitar y claro, lo tenía así puesto desde el principio y por eso nunca me llegó a funcionar bien.
Gracias por tu paciencia