簡體   English   中英

Java檢索括號中的字符串字符

[英]Java retrieve String characters in brackets

我在Java中有一個String,它以這種格式保存數據:

String x = "xxxxxx xxxxxx xxxxxx (xxx)";

如何將字符串的值設置為方括號中的字符,而不包括方括號? (請注意,字符大小在每種情況下都會有所不同)。

單行解決方案是使用String.replaceAll()和適當的正則表達式來捕獲整個輸入(有效地替換整個輸入),而且還捕獲(非貪婪地)您要作為組1的部分,然后僅放回該組:

String part = x.replaceAll(".*\\((.*?)\\).*", "$1"); 

僅供參考,正則表達式字符串中的雙反斜杠是正則表達式中的單斜杠,然后轉義正則表達式中的文字括號

這是一些測試代碼:

public static void main(String[] args) {
    String x = "xxxxxx xxxxxx xxxxxx (xxx)";
    String part = x.replaceAll(".*\\((.*)\\).*", "$1");
    System.out.println(part);
}

輸出:

xxx    

正則表達式可以做到這一點,但是我的正則表達式很弱。 非正則表達式的方式如下:

int firstIndex = x.indexOf("(");
x = x.substring(firstIndex+1, x.length()-1);

編輯:正如注釋中指出的那樣,如果數據中有其他任何括號(除了結尾處),則將不起作用。 您需要改用以下內容:

int firstIndex = x.lastIndexOf("(", x.length()-6);
x = x.substring(firstIndex+1, x.length()-1);

EDIT2:重新閱讀並意識到封閉括號是最后一個字符。 因此,無需獲取第二個索引。

您可以使用String.split方法進行這種提取。

String x = "xxxxxx xxxxxx xxxxxx (xxx)";    
String[] arr = x.split("\\(");

x = arr[1].substring(0, arr[1].indexOf(")")); // To remove the trailing bracket.

System.out.println(x);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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