Java中如何取出String字符串括號中的內(nèi)容
Java取出String字符串括號中的內(nèi)容
package com.cnic.flink.etl.test; import java.util.HashMap; import java.util.Map; public class Map2Bean { public static void main(String[] args) { String str = "[tid:2656,Q:W183CWbcBewrSgccJOdw] "; //String substring = str.substring(0, 10); //System.out.println(substring); //String sub001 = str.substring(0 ,10); //System.out.println(sub001); //int i = str.indexOf("[", "]"); String substring = str.substring(str.indexOf("[")+1, str.indexOf("]")); System.out.println(substring); HashMap<String, String> map = new HashMap<String, String>(); } }
Java解析括號內(nèi)子字符串的內(nèi)容
問題描述
假設(shè)String input = "test data (測試)",現(xiàn)在需要獲取括號內(nèi)的測試字串。
也有可能給定字符串包括多個括號組:
String input = "test data (測試)(data)" ,解析結(jié)果為:測試 和 data 。
多種方式實現(xiàn)
1.直接定位
我們首先想到的直接使用 String的indexOf方法進行定位:
String input = "test data (測試)"; String output = input.substring(input.indexOf("(") + 1 ,input.indexOf(")")); log.info("output={}", output);
這種方法缺少靈活性,當(dāng)有多個括號時不支持。
2.正則方式
下面使用正則進行解析,支持多個括號組:
? ? String input = "test data (測試)(data)"; ? ? String pattern = "\\(([^\\)]+)\\)"; ? ? Matcher matcher = Pattern.compile(pattern).matcher(input); ? ? while (matcher.find()) { ? ? ? ? String output = matcher.group(1); ? ? ? ? log.info("output={}", output); ? ? }
正則解釋:
- \\(: 表示字符(
- (: 開始匹配組
- [: 中括號表示可選內(nèi)容
- ^: 表示不是后續(xù)字符
- ): 在前面加上 ^, 表示除了 “ )” 的所有字符
- +: 表示1個或多個[]括號內(nèi)的字符集
- ): 停止匹配組
- \\): 表示關(guān)閉括號
如果明確知道有幾個括號也可以簡化:
String input = "test data (測試)data"; String [] outs = input.split("[\\(\\)]"); log.info(outs[1]);
3.第三方庫
這里使用 org.apache.commons.lang3包中的StringUtils工具包,它提供了類似的實現(xiàn):
String input0 = "test data (測試)"; String input1 = "test data (測試)(data)"; String output = StringUtils.substringBetween(input, "(", ")"); String [] out = StringUtils.substringsBetween(input1,"(", ")");
同時支持單個括號或多個括號組,且括號作為參數(shù),使用簡單不失靈活。
心得:
以上介紹了Java幾種方式解析字符串中包括括號內(nèi)的子字符串內(nèi)容。直接使用Java String內(nèi)置方法定位,使用正則表達式以及第三方庫進行解析。
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
- JSON.toJSONString()方法在Java中的使用方法及應(yīng)用場景
- Java中的String不可變性實現(xiàn)
- Java中的StringTokenizer實現(xiàn)字符串切割詳解
- Java中的String、StringBuilder、StringBuffer三者的區(qū)別詳解
- Java的String類中的startsWith方法和endsWith方法示例詳解
- Java中的StringJoiner類使用示例深入詳解
- Java中的StringBuilder()常見方法詳解
- java8中的List<String>轉(zhuǎn)List<Integer>的實例代碼
- Java中的StringUtils引入及使用示例教程
- 深入理解Java中的String(示例詳解)
相關(guān)文章
詳解java集成支付寶支付接口(JSP+支付寶20160912)
本篇文章主要介紹了java集成支付寶支付接口,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-12-12LeetCode?動態(tài)規(guī)劃之矩陣區(qū)域和詳情
這篇文章主要介紹了LeetCode?動態(tài)規(guī)劃之矩陣區(qū)域和詳情,文章基于Java的相關(guān)資料展開對LeetCode?動態(tài)規(guī)劃的詳細介紹,需要的小伙伴可以參考一下2022-04-04Java實現(xiàn)的Excel列號數(shù)字與字母互相轉(zhuǎn)換功能
這篇文章主要介紹了Java實現(xiàn)的Excel列號數(shù)字與字母互相轉(zhuǎn)換功能,涉及java針對Excel相關(guān)數(shù)值與字符串操作技巧,需要的朋友可以參考下2018-03-03maven創(chuàng)建spark項目的pom.xml文件配置demo
這篇文章主要為大家介紹了maven創(chuàng)建spark項目的pom.xml文件配置demo,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-05-05java 線程池的實現(xiàn)原理、優(yōu)點與風(fēng)險、以及4種線程池實現(xiàn)
這篇文章主要介紹了java 線程池的實現(xiàn)原理、優(yōu)點與風(fēng)險、以及4種線程池實現(xiàn)包括了:配置線程池大小配置,線程池的實現(xiàn)原理等,需要的朋友可以參考下2023-02-02