如何拆分'*';Java中的字符串
我无法使用“split_u2;”拆分字符串,当使用“split_2;”时,我的java netbean似乎无法拆分 你知道我们怎样才能克服吗 我引用了此解决方案,但它只能在不使用“*”的情况下拆分 错误是:如何拆分'*';Java中的字符串,java,string,Java,String,我无法使用“split_u2;”拆分字符串,当使用“split_2;”时,我的java netbean似乎无法拆分 你知道我们怎样才能克服吗 我引用了此解决方案,但它只能在不使用“*”的情况下拆分 错误是: Exception in thread "main" java.util.regex.PatternSyntaxException: Dangling meta character '*' near index 0 *split_* 输出应为: test test2 在拆分字符串
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_*"));
否则您将遇到困难,因为*
是正则表达式中的一个特殊字符,用于匹配执行它的字符或组的任意数量的匹配
当然,您可以使用\
手动转义正则表达式中使用的所有特殊字符,但如果您不想使用任何正则表达式功能,则这既不太清晰,也更容易出错。在拆分字符串周围使用Pattern.quote()
,以确保它被视为文本,不是正则表达式:
String[] strArray = echoPHP.split(Pattern.quote("*split_*"));
否则您将遇到困难,因为*
是正则表达式中的一个特殊字符,用于匹配执行它的字符或组的任意数量的匹配
当然,您可以使用\
手动转义正则表达式中使用的所有特殊字符,但如果您不想使用任何正则表达式功能,则这既不太清晰,也更容易出错。请尝试:echoPHP.split(\\*split\\\*”
重要的是要记住,传递给split
方法的字符串实际上是一个正则表达式。请参阅API以了解更多详细信息:尝试:echoPHP.split(“\\\*split\\\*”)
重要的是要记住,传递给
split
方法的字符串实际上是一个正则表达式。有关更多详细信息,请参阅API:您可以使用如下拆分方法
String[] strArray = echoPHP.split("\\*split_\\*");
- 性格是一种特殊的性格。。所以你应该在*字符前面使用“\”李>
- 您可以使用这样的拆分方法
String[] strArray = echoPHP.split("\\*split_\\*");
- 性格是一种特殊的性格。。所以你应该在*字符前面使用“\”李>
在这种情况下,如果在“.”之前或之后错误地留有空格怎么办?最好还是考虑这些空间。强>String imageName=“picture1.jpg”; 字符串[]imageNameArray=imageName.split(“\\”); 对于(int i=0;i
String imageName = "picture1 . jpg"; String [] imageNameArray = imageName.split("\\s*.\\s*"); for(int i =0; i< imageNameArray.length ; i++) { system.out.println(imageNameArray[i]); }
String imageName=“picture1.jpg”; 字符串[]imageNameArray=imageName.split(“\\s*\\s*”); 对于(int i=0;i
这里,\s*是要考虑空格并只给您所需的拆分字符串。
现在,假设您将参数放置在两个特殊字符之间,如:#parameter#或parameter,甚至两个不同的符号,如*parameter#。通过该代码,我们可以得到这些符号之间所有这些参数的列表: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()); } } }
import java.util.ArrayList; 导入java.util.regex.Matcher; 导入java.util.regex.Pattern; 导入org.apache.commons.lang.StringUtils; 公共类拆分器{ 公共静态void main(字符串[]args){ 字符串模式1=“#””; 字符串模式2=“#””; String text=“(#n1#u 1#/#n2#u 2#)*2/#n1#u 1#*34/#n4#”; 模式p=Pattern.compile(Pattern.quote(pattern1)+“(.*?”+Pattern.quote(pattern2)); 匹配器m=p.Matcher(文本); while(m.find()){ ArrayList参数=新的ArrayList(); 添加(m组(1)); System.out.println(参数); ArrayList结果=新建ArrayList(); 结果。添加(参数); //System.out.println(result.size()); } } }
这里列出的结果将包含参数n1_1、n2_2、n4_4。在java中拆分字符串的情况不同。您可以使用一个适合您的应用程序 案例1:下面是用字符“”拆分字符串的代码:
在这种情况下,如果在“.”之前或之后错误地留有空格怎么办?最好还是考虑这些空间。强>String imageName=“picture1.jpg”; 字符串[]imageNameArray=imageName.split(“\\”); 对于(int i=0;i
String imageName = "picture1 . jpg"; String [] imageNameArray = imageName.split("\\s*.\\s*"); for(int i =0; i< imageNameArray.length ; i++) { system.out.println(imageNameArray[i]); }
String imageName=“picture1.jpg”; 字符串[]imageNameArray=imageName.split(“\\s*\\s*”); 对于(int i=0;i
这里,\s*是要考虑空格并只给您所需的拆分字符串。
现在,假设您将参数放置在两个特殊字符之间,如:#parameter#或parameter,甚至两个不同的符号,如*parameter#。通过该代码,我们可以得到这些符号之间所有这些参数的列表: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()); } } }
import java.util.ArrayList; 导入java.util.regex.Matcher; 导入java.util.regex.Pattern; 导入org.apache.commons.lang.StringUtils; 公共类拆分器{ 公共静态void main(字符串[]args){ 字符串模式1=“#””; 字符串模式2=“#””; String text=“(#n1#u 1#/#n2#u 2#)*2/#n1#u 1#*34/#n4#”; 模式p=Pattern.compile(Pattern.quote(pattern1)+“(.*?”+Pattern.quote(pattern2)); 匹配器m=p.Matcher(文本); while(m.find()){ ArrayList参数=新的ArrayList(); 添加(m组(1)); System.out.println(参数); ArrayList结果=新建ArrayList(); 结果。添加(参数); //System.out.println(result.size()); }
- 性格是一种特殊的性格。。所以你应该在*字符前面使用“\”李>