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