如何拆分'*';Java中的字符串

如何拆分'*';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 在拆分字符串

我无法使用“split_u2;”拆分字符串,当使用“split_2;”时,我的java netbean似乎无法拆分

你知道我们怎样才能克服吗

我引用了此解决方案,但它只能在不使用“*”的情况下拆分

错误是:

    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_\\*");
      
      • 性格是一种特殊的性格。。所以你应该在*字符前面使用“\”
      在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());
      }
      }
      }
      

      这里列出的结果将包含参数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());
      }