# Zahlen aus einem Textfeld richtig auslesen?



## webix (8. April 2004)

Hallo,

folgendes Problem, ich gebe in ein Feld folgende zeichenkette ein 2a-2b+30c. Jetzt möchte ich die Zahlen vor a,b und c mit richtigem Vorzeichen ausgeben. Wie stelle ich das am geschicktesten an?


----------



## Thomas Darimont (8. April 2004)

Hallo!

Spiel einfach mal ein wneig hiermit rum:


```
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * @author      Darimont<br>
 * @version     1.0<br>
 * Date of creation:  08.04.2004<br>
 * File:         SplitNumbers.java<br>
 * Modifier:     Darimont<br>
 * Revision:     Revision<br>
 * State:        Germany<br>
 */

public class SplitNumbers {

	public static void main(String[] args) {
		String symbols = "+-*/";
		String str = "2a-2b+30c+a-42x*37v";
		String str2 = "-2b";
		String regex = "[+-]?([0-9]*?[a-z]*?)";

		Pattern pattern = Pattern.compile(regex);
		Matcher matcher = pattern.matcher(str2);

		int strLen = str.length();
		StringBuffer buffer = new StringBuffer();
		for (int i = 0; i < strLen; i++) {
			if (symbols.indexOf(str.charAt(i)) >= 0 || i + 1 == strLen) {
				String element = buffer.toString();
				System.out.println(element);
				int number = parseNumber(element);
				System.out.println(number);
				if (i + 1 != strLen)
					buffer = new StringBuffer();
			}
			buffer.append(str.charAt(i));
		}
	}

	/**
	 * @param element
	 * @return
	 */
	private static int parseNumber(String element) {
		// TODO Auto-generated method stub
		if ("+*/".indexOf(element.charAt(0)) >= 0)
			element = element.substring(1, element.length());
		if("abcdefghijklmnopqrstuvwxyz".indexOf(element.charAt(0)) >= 0)
			return 0;
		int elemSize = element.length();
		int i;
		for (i = elemSize - 1; i >= 0; i--) {
			if ("0123456789".indexOf(element.charAt(i)) >= 0)
				break;
		}

		return Integer.parseInt(element.substring(0, i + 1));
	}
}
```

Gruß Tom


----------



## webix (10. April 2004)

Danke.


----------

