2012-05-21 16 views

risposta

4

Lo faccio spesso solo con un ritorno a capo, senza un salto di riga:

printf "%5d\r", loopval 

Ogni volta che attraverso il vostro ciclo, la stampa inizierà di nuovo all'inizio della riga.

È possibile ottenere un po 'di confusione se tutti gli altri messaggi devono essere stampati mentre ciò accade, specialmente se l'altro messaggio contiene una nuova riga. Ma è una soluzione economica e sporca.

+0

Non riesco a ottenere questo per funzionare su MacOS, l'output non viene sovrascritto ma aggiunto. Qualche idea? –

+0

Funziona su OSX 10.8.5, groovy 2.2.1 JVM 1.7.0. – youri

2

È possibile utilizzare jline che viene fornito con Groovy:

(1..5).each { 
    print "Done $it of 5" 
    Thread.sleep(1000) 
    print jline.ANSIBuffer.ANSICodes.left(9999) 
} 

Fino a quando la console supporta sequenze di escape ANSI, che dovrebbe funzionare ...

PS: ho usato 9999 perché (come si dice in the documentation for left)

Se n è maggiore o uguale alla colonna cursore, il cursore viene spostato nella prima colonna

+0

Non sembra funzionare molto bene, sto ottenendo questo: Fatto 1 di 5 [9999DDone 2 di 5 [9999DDone 3 di 5 [9999DDone 4 su 5 [ 9999DDone 5 di 5 [9999D – Yossale

+0

Che console stai usando? Finestre? Se lo stai provando nella console Groovy, anche questo non funzionerà. –

+0

Sto lavorando su Windows - Dà lo stesso risultato nel prompt cmd, nella console Groovy e nell'output della console Idea Intellij – Yossale

1

come già detto Danny Y., un avanzamento di riga funzionerà, backspace potranno anche fare il trucco:

(0..100).each { 
    print "\b"*20+it+"%" 
    sleep 100 
} 

una volta ho dovuto sovrascrivere un'uscita multipline - la soluzione che ho trovato è stato quello di

print "\r\n"*80 

al fine di scorrere tutti i vecchi contenuti fuori dallo schermo - non è una bella soluzione, ma funziona su Windows shell :-)

2

per chi si imbatte in questo - ho trovato utilizzando il foll grazie per essere la soluzione migliore:

(0..100).each { 
    print "\r$it%" 
} 
println() 
Problemi correlati