[英]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.