簡體   English   中英

我可以在 split() 中使用字符串數組來指定分隔符嗎?

[英]Can I use an String array within split() to specifier delimiters?

剛接觸 java/coding 並試圖掌握它,所以提前感謝您的幫助!

我有這個字符串“s”,我使用一組運算符作為分隔符進行拆分。

String[] workableParts = s.split("(?<=[-+*/%^=])|(?=[-+*/%^=])");

我將每個拆分存儲在 workableParts 數組中,分隔符也存儲為數組的一部分 - 例如,輸入 7+7 將存儲為:

workableParts[0]="7" workableParts[1]="+" workableParts[2]="7"

我還在其他地方使用這個運算符數組:

private String[] ops = {"-","+","*","/","%","^","="};

有沒有辦法可以使用它來替換上面拆分中的文本但保持相同的效果? 這個想法是,如果我以后添加運算符,我只需在一個地方更新它們。

非常感謝,

山姆

一種可能的選擇是使用Arrays.toString(ops);將字符串數組轉換為字符串。 並在正則表達式中使用它。 這將返回[-,+,*,/,...]形式的字符串。

現在,您可以將,替換為空字符串""並在正則表達式中使用 substring。

private String[] ops = {"-","+","*","/","%","^","="};
String joinedOps = Arrays.toString(strArray);
joinedOps = joinedOps.substring(1, str.length()-1).replace(",", "");
String regex = "...."+joinedOps+"...";

你可以做這樣的事情。 定義您自己的 split 方法並在其中構建正則表達式。 當您更改 ops 數組時,您將修改正則表達式。

注意:在放置操作時必須小心,以免它們構造出意外的字符 class。 例如-應該在前面,而^不應該在前面。

static String[] ops = { "-", "+", "*", "/", "%", "^", "=" };

public static void main(String[] args) {
        String s = "7+7-8^2";

        String[] workableParts = opSplit(s);        
        System.out.println(Arrays.toString(workableParts));     
}

印刷

[7, +, 7, -, 8, ^, 2]

方法


public static String[] opSplit(String s) {
    String op = String.join("", ops);
    String regex = "(?<=[" + op + "])|(?=[" + op + "])";
    return s.split(regex);
}

暫無
暫無

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

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