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