い消印刷文字コンソール-アプリケーション(Linux)?
質問
私の作成の小さなコンソールアプリを必要とする進捗バーがあります。何かしてもらいました。
Conversion: 175/348 Seconds |========== | 50%
私の質問はどうかという話があったようだ文字を印刷済みのコンソール?私達の51%、消去このコンソールから、新しい要素を挿入します。現在の溶液に、これはう...
Conversion: 175/348 Seconds |========== | 50%
Conversion: 179/348 Seconds |========== | 52%
Conversion: 183/348 Seconds |========== | 54%
Conversion: 187/348 Seconds |=========== | 56%
コードしてお使いくだ...
print "Conversion: $converted_seconds/$total_time Seconds $progress_bar $converted_percentage%\n";
私はそこにLinuxを使用PHPのみを採用しておりますアプリでください言い訳を言語選択).そのソリューションは、Linuxプラットフォームだっていうソリューションのクロスプラットフォームは、どちらかというと好ましい。
解決
言語の選択について謝罪する必要はないと思います。 PHPはコンソールアプリケーションに最適な言語です。
これを試してください:
<?php
for( $i=0;$i<10;$i++){
print "$i \r";
sleep(1);
}
?>
<!> quot; \ r <!> quot;行を新しいテキストで上書きします。新しい行を作成するには、単に<!> quot; \ n <!> quot;を使用できますが、すでに知っていると思います。
これがお役に立てば幸いです!これはLinuxで動作することは知っていますが、Windowsまたは他のオペレーティングシステムで動作するかどうかはわかりません。
他のヒント
消去した印刷文字入となります。:
echo chr(8) . " ";
エコーのキャラクター、移動カーソルの後一つの場所のスペースを上書きの文字です。利用できるchr(8)
複数の連続ですが複数の文字です。echo "\r";
戻りのカーソルの現在のライン。では、今までのアドバイスをいたします。第三のオプションの設定を行や列のカーソル位置をANSI逃コードにプリントの置換文字です。ない場合があったので、それを全ての端末:
function movecursor($line, $column){
echo "\033[{$line};{$column}H";
}
\ rがトリックを行いました。
将来の参考のために、LinuxのPHPでは\ bは機能しません。興味があったので、他の言語でもいくつか実験を行いました(Linuxでこれを行いました-Windows / Macでも結果が同じかどうかわかりません)。
\ b動作する場所...
- Perl
- ルビー
- Tcl-コード
puts -nonewline "Hello\b"
を使用
\ bが機能しません
- PHP-コード
print "Hello\b";
はHello\b
を出力します
- Python-コード
print "Hello\b"
はHello<new line>
を出力します。print "Hello\b",
と同じ結果
Linuxでも同じかどうかはわかりませんが、Windowsコンソールアプリでは\ rを印刷できます。カーソルは行の最初の左位置に戻り、すべての文字を右に上書きできます。
\ bを使用して1文字戻ることができますが、進行状況バーを更新するため、\ b x回印刷するよりも\ rを使用する方が簡単です。
これはかなり古いトピックのようですが、5つをドロップします。
for ($i; $i<_POSITION_; $i--) {
echo "\010"; //issue backspace
}
これはしばらく前にインターネットで見つけましたが、残念なことにどこで覚えていないのですか。したがって、すべてのクレジットは元の著者に割り当てられます。
以前に印刷された文字を消去するには、その後にバックスペースを印刷します。 print <!> quot; a <!> quot; print <!> quot; \ b <!> quot;
nothing を印刷します(実際には印刷してからバックスペースを表示しますが、おそらく気付かないでしょう)