[英]How to split a '*' String in Java
我有問題拆分字符串“split_”,似乎我的Java netbean着分裂時,“split_”被使用。
知道我們如何克服這個問題嗎?
我指的是這種解決方案,但它只能在不使用'*'的情況下拆分。 如何在Java中分割字符串
String echoPHP= "test*split_*test2";
String[] strArray = echoPHP.split("*split_*");
String part1 = strArray2[0]; // 004
String part2 = strArray2[1]; // 034556
System.out.println(strArray[0]);
System.out.println(strArray[1]);
錯誤是:
Exception in thread "main" java.util.regex.PatternSyntaxException: Dangling meta character '*' near index 0
*split_*
輸出應該是:
test
test2
在拆分字符串周圍使用Pattern.quote()
,以確保將其視為文字而不是正則表達式:
String[] strArray = echoPHP.split(Pattern.quote("*split_*"));
否則您會遇到困難,因為*
是正則表達式中的特殊字符,用於匹配出現在該字符或字符組后面的任意數量的字符。
當然,您可以使用\\
手動轉義正則表達式中使用的所有特殊字符,但是如果您不希望使用任何正則表達式功能,則這既不太清晰,也更容易出錯。
嘗試: echoPHP.split("\\\\*split_\\\\*")
要記住的重要一點是,傳遞給split
方法的String實際上是一個正則表達式。 有關更多詳細信息,請參考API: http : //docs.oracle.com/javase/7/docs/api/java/lang/String.html#split(java.lang.String)
這是在Java中拆分字符串的不同情況。 您可以使用一種適合您的應用程序。
情況1:這是用字符“。”分割字符串的代碼。 :
String imageName = "picture1.jpg";
String [] imageNameArray = imageName.split("\\.");
for(int i =0; i< imageNameArray.length ; i++)
{
system.out.println(imageNameArray[i]);
}
如果錯誤地在“。”之前或之后還留有空格,該怎么辦? 在這種情況下? 最好也考慮這些空間。
String imageName = "picture1 . jpg";
String [] imageNameArray = imageName.split("\\s*.\\s*");
for(int i =0; i< imageNameArray.length ; i++)
{
system.out.println(imageNameArray[i]);
}
在這里,\\\\ s *可以考慮空格,並且只為您提供所需的分割字符串。
現在,假設您已將參數放置在兩個特殊字符之間,例如:#parameter#或parameter或甚至兩個不同的符號之間,例如* paramter#。 我們可以通過以下代碼在這些符號之間列出所有這些參數:
import java.util.ArrayList;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.apache.commons.lang.StringUtils;
public class Splitter {
public static void main(String[] args) {
String pattern1 = "#";
String pattern2 = "#";
String text = "(#n1_1#/#n2_2#)*2/#n1_1#*34/#n4_4#";
Pattern p = Pattern.compile(Pattern.quote(pattern1) + "(.*?)" + Pattern.quote(pattern2));
Matcher m = p.matcher(text);
while (m.find()) {
ArrayList parameters = new ArrayList<>();
parameters.add(m.group(1));
System.out.println(parameters);
ArrayList result = new ArrayList<>();
result.add(parameters);
// System.out.println(result.size());
}
}
}
此處的列表結果將具有參數n1_1,n2_2,n4_4。
您可以使用像這樣的分割方法
String[] strArray = echoPHP.split("\\*split_\\*");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.