簡體   English   中英

如何在不刪除拆分字符的情況下拆分字符串

[英]How to Split a String without deleting split character

我想將一個String拆分成多個部分,但是當字符串被拆分時,不應刪除該字符。

在我的示例中,我想要輸出:

parts[0]= 4x
parts[1]= -3y
parts[2]= 6z
parts[3]= 3v

這是我的代碼:

import java.util.Arrays;

public class Polynomaddition {

public static void main(String[] args) {
    String fraction = "4x-3y+6z+3v";
    String [] parts = fraction.split("(?<=\\[a-z]");
    System.out.println(Arrays.toString(parts));
    //String result = calculator(fraction);
}

public static String calculator(String s) {
    String result = "";
     String [] parts = s.split("(?<=[a-z])", -1);

    return result;
    }
}

解決方案1

在您的情況下,您似乎想要這個正則表達式\\+|(?=-)

String[] parts = fraction.split("\\+|(?=-)");

細節

  • \\+加號
  • | 或者
  • (?=-)減去而不刪除它

解決方案2

或者使用您的正則表達式,但您需要檢查每個結果,例如:

String[] parts = Arrays.stream(fraction.split("(?<=[a-z])"))
        .map(s -> s.startsWith("+") ? s.substring(1, s.length()) : s)
        .toArray(String[]::new);

輸出

[4x, -3y, 6z, 3v]

我根本不會使用split 相反,使用匹配實際多項式項的模式,並使用匹配器,特別是它的findgroup方法,來提取每個匹配項:

List<String> parts = new ArrayList<>();

Matcher termMatcher = Pattern.compile("[-+]?\\d+[a-z]").matcher(fraction);
while (termMatcher.find()) {
    String part = termMatcher.group();
    if (part.startsWith("+")) {
        part = part.substring(1);
    }
    parts.add(part);
}

System.out.println(parts);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM