簡體   English   中英

如何在Java中分割'*'字符串

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM