Czy ktoś mógłby mi pomóc w oddzieleniu tego matematycznego wyrażenia? 125*1*4*4+82*1*10+2*59+2+4
w Javie. Chcę, aby liczby stanowiły wyrażenie, a ja nie jestem pewien, jak go użyć split()
metoda tutaj.
Odpowiedzi:
2 dla odpowiedzi № 1Możesz użyć podziału z tym wyrażeniem regularnym [*+]
:
String[] numbers = "125*1*4*4+82*1*10+2*59+2+4".split("[*+]");
Wyjścia
[125, 1, 4, 4, 82, 1, 10, 2, 59, 2, 4]
Jeśli wyrażenie matematyczne zawiera spacje, możesz je usunąć przed użyciem i użyć podziału, aby można było użyć:
String[] numbers = "125*1*4*4+82*1*10+2*59+2+4".replaceAll("\s+", "").split("[*+]");
//---------------------------------------------^----------------------^
Zauważ, że możesz dodać kolejne operatory arytmetyczne, takie jak [*+-/]
Inne rozwiązanie z eparvan:
Jeśli nie masz pewności, co może zawierać wyrażenie, możesz użyć:
String[] numbers = "125*1*4*4+82*1*10+2*59+2+4".replaceAll("\s+", "").split("[^0-9]");
//----------------------------------------------------------------------------^----^
Edytować
Co jeśli chcę uzyskać "+" i "*"? Wkład:
125*1*4*4+82*1*10+2*59+2+4
Wydajność:***+**+*++
W tym przypadku możesz podzielić z d+
lubię to :
String[] numbers = "125*1*4*4+82*1*10+2*59+2+4".replaceAll("\s+", "").split("\d+");
Ale będę preferować, aby przejść z wzorcem, to jest więcej praktyki, a następnie podzielić, na przykład można użyć:
String str = "125*1/4*4+82*1*10+2/59-2+4";
String regex = "[^\d]";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(str);
while (matcher.find()) {
System.out.println(matcher.group());
}