Überprüfen ob System.in leer ist / Regex Pattern für Whitespace

Aracon

Aracon

Routinier
Hi,

hat jemand eine Idee wie ich überprüfen kann, ob nichts per stdin übergeben wird?

ich lese den Sysin per

Code:
BufferedReader sysin = new BufferedReader(new InputStreamReader(System.in));

Leider funktioniert (sysin.toString).equals("") nicht. Hat da jemand eine Idee?

Außerdem möchte ich per string.replaceall() allen Whitespace um ein Pivotelement entfernen. Beispielsweise ("_" als Whitespace): "_______pivot____" soll einfach "pivot" werden.

Vielen Dank für Vorschläge!
 
Leider funktioniert (sysin.toString).equals("") nicht. Hat da jemand eine Idee?

Ohne mich jetzt durch die API-Doku zu InputStream zu wühlen, sicher das du nicht null zurückkriegst bei keiner Eingabe und nicht einen leeren String?

Außerdem möchte ich per string.replaceall() allen Whitespace um ein Pivotelement entfernen. Beispielsweise ("_" als Whitespace): "_______pivot____" soll einfach "pivot" werden.

Und wo ist das Problem?

-> http://java.sun.com/j2se/1.5.0/docs/api/

String replaceAll(String regex, String replacement)
Replaces each substring of this string that matches the given regular expression with the given replacement.

Also in deinem Fall (ungetestet):

Code:
meinString.replaceAll('\s+','')

P.S.: Remember, java-strings are immutable.........
 
Zuletzt bearbeitet:
Hier ein paar Tipps:

  • Mach den InputStream austauschbar, verwende einen Lesepuffer und BufferedReader.read(char[] cbuf, int off, int len). Hänge den Output an einen StringBuilder an. Robuster, effizienter und kann mit Inputs umgehen, die nicht auf newlines enden. Das erledigt auch das Problem mit leeren Inputs.
  • Verwende Pattern, um mehrzeilige Inputs zu bearbeiten und Groß-und Kleinschrift zu ignorieren.
  • Das Pattern würde ich wie im Code unten formulieren; so funktioniert es auch, wen "pivot" am Eingabeanfang oder -ende steht.

PHP:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.regex.Pattern;

public class Main {

	public static void main(String[] args) {
		final InputStream SOURCE = System.in;
		StringBuilder sb = new StringBuilder();
		BufferedReader rdr = new BufferedReader(new InputStreamReader(SOURCE));
		final Pattern pPivotSource = Pattern.compile("\\s*(pivot)\\s*", Pattern.CASE_INSENSITIVE | Pattern.MULTILINE);
		char buffer [] = new char [256];
		int nBytes;
		
		try {
			while ((nBytes = rdr.read(buffer, 0, buffer.length)) > 0) {
				sb.append(buffer, 0, nBytes);
			}
		} catch (IOException ex) {
			ex.printStackTrace(System.err);
		}
		
		System.out.println(pPivotSource.matcher(sb.toString()).replaceAll("$1"));
	}
}
 
Zuletzt bearbeitet:

Ähnliche Themen

PHP funktioniert, nur Web-Aufrufe mit Optionen nicht.

Daten Convertieren und auf einen Server schieben?

OpenSUSE 13.2, gallium-nine, mesa, wine

Fehlerhafte Installation von OpenSUSE 13.1

Weiterleiten mit Mailx

Zurück
Oben