# String ab einem bestimmten Char abschneiden???



## cRacKheAd (19. Dez 2010)

servus beinand!

es geht um Folgendes:
ein ppm besteht ja nach maxValue eigentlich nur noch aus Zahlen und Leerzeichen.
leider ist es möglich, jeder Zeile einen Kommentar anzuhängen (durch # gekennzeichnet)

jetzt möchte ich diese etwaigen Kommentare entfernen.

wenn eine solche Zeile nun als String vorliegt, also zB:
"123 543 234 355 433 233 # völlig sinnbefreite grafik"

wie kann ich dann alles ab dem "#" abschneiden, wenn ich den Index von # erst zur laufzeit kenne?

vielen Dank!


----------



## Gast2 (19. Dez 2010)

```
line= line.substring(0, line.indexOf("#")-1);
```


----------



## darekkay (19. Dez 2010)

indexOf und substring sind die Methoden, die du suchst: String (Java 2 Platform SE v1.4.2)

EDIT: mist, zu spät ^^


----------



## Landei (19. Dez 2010)

(ungetestet)

```
String s = "123 543 234 355 433 233 # völlig sinnbefreite grafik";
String t = s.substring(0, s.indexOf('#'));
```


----------



## cRacKheAd (19. Dez 2010)

vielen Dank, läuft wie intendiert


----------



## cRacKheAd (19. Dez 2010)

aaahhh er schneidets iwie doch nicht raus!!!


```
if (line.matches("#")) {
				line = line.substring(0, (line.indexOf("#") - 1));
			}
```

müsste das nicht alles ab # abschneiden, sofern ein # vorkommt?
line ist ein String.

wenn ich mir danach line ausgeben lasse erscheint ganz frech ein # aufm bildschirm  :?: 

pls help!!!

weis nich obs hilft aber ich zeig euch mal die ganze Klasse. Sie erzeugt aus nem ppm vom typ P3 ne Instanz von PPMImage. wofür die gut ist, ist hier ja auch egal.

```
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;

public class PPMReader {

	public static PPMImage read(File inputFile) throws IOException {

		BufferedReader br = new BufferedReader(new FileReader(inputFile));
		int width = 0;
		int height = 0;
		int maxVal = 0;
		String[] inhalte;
		do {
			String line = br.readLine();
			if (line.matches("#")) {
				line = line.substring(0, (line.indexOf("#") - 1));
			}
			inhalte = line.split("\\s+");
			if (inhalte[0].equals("P3")) {
			} else if (inhalte.length == 1)
				maxVal = Integer.valueOf(br.readLine());
			else if (inhalte.length == 2) {
				width = Integer.valueOf(inhalte[0]);
				height = Integer.valueOf(inhalte[1]);

			}
		} while (inhalte.length != 1 && !(inhalte[0].equals("P3")));

		PPMImage image = new PPMImage(width, height, maxVal);

		String aktuelleZeile;

		// durchläuft alle zeilen, teilt sie nach whitespace, speichert die
		// entsprechenden zahlen in image.pixel
		int zeilenIndex = 0;
		while ((aktuelleZeile = br.readLine()) != null) {

			if (aktuelleZeile.matches("#")) {
			aktuelleZeile = aktuelleZeile.substring(0, (aktuelleZeile
					.indexOf("#") - 1)); // Kommentare abschneiden
			}

			String[] zeilenInhalt = aktuelleZeile.split("\\s+");
			if (!zeilenInhalt[0].equals("")) { // falls eine Zeile nicht nur aus
												// nem Kommentar bestand
				int zahlenIndex = 0;
				int pixelIndex = 0;
				for (String indexDerZahl : zeilenInhalt) {
					int zahl = Integer.parseInt(indexDerZahl);
					if (zahlenIndex % 3 == 0)
						image.setRed(pixelIndex, zeilenIndex, zahl);
					else if (zahlenIndex % 3 == 1)
						image.setGreen(pixelIndex, zeilenIndex, zahl);
					else if (zahlenIndex % 3 == 2)
						image.setBlue(pixelIndex, zeilenIndex, zahl);
					zahlenIndex++;
					if (zahlenIndex != 0 && zahlenIndex % 3 == 0)
						pixelIndex++;
					if (zahlenIndex == width)
						zeilenIndex++;
				}
			}
		}

		br.close();
		return image;
	}
}
```

und hier noch die Fehlermeldung:

Exception in thread "main" java.lang.NumberFormatException: For input string: "#"
	at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
	at java.lang.Integer.parseInt(Integer.java:470)
	at java.lang.Integer.parseInt(Integer.java:514)
	at PPMReader.read(PPMReader.java:51)
	at PPMMain.main(PPMMain.java:11)

findet wer den fehler?


----------



## Gast2 (19. Dez 2010)

Zum einen erwartet matches einen regulären ausdruck, und zum anderen macht die methode nicht was du willst.
du suchst vermutlich contains


----------



## cRacKheAd (19. Dez 2010)

contains isses, super sache  danke schön


----------

