激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

香港云服务器
服務器之家 - 編程語言 - Java教程 - java中字符串參數化符號${}的解析

java中字符串參數化符號${}的解析

2020-07-27 14:40張飛_ Java教程

這篇文章主要給大家介紹了java中字符串參數化符號${}是如何解析的,文中給出了詳細的分析與解決代碼,有需要的朋友可以參考借鑒,下面來一起看看吧。

前言

我們在很多地方都能看到代表參數意義的符號${},可能我們在寫一些框架的時候,有時候也需要用到這個符號,但他們是如何精確解析的?或者說需要我們自已寫的時候,如何寫?

我們先來看以下的幾個場景:

      1.字符串"a${a}a"

      2.字符串"a\${a}a"

      3.字符串"a${a\}a"

      4.字符串"a${a\}a}a"

      5.字符串"a${a}a${"

      6.字符串"a${a}a${a}"

以上幾個字符串中,基本上包括了使用的一些場景,所以我們在解析的時候,要把各種情況都考慮清楚,盡量的做到全面,這樣我們的框架才有意義。

很顯然,我們都會采用正則來解析,于是我們來新建一個JAVA正則的類:

java" id="highlighter_266018">
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
public class RegExp {
 
 public boolean match(String reg, String str) {
  return Pattern.matches(reg, str);
 }
 
 public List<String> find(String reg, String str) {
  Matcher matcher = Pattern.compile(reg).matcher(str);
  List<String> list = new ArrayList<String>();
  while (matcher.find()) {
   list.add(matcher.group());
  }
  return list;
 }
  
 public List<String> find(String reg, String str, int index) {
  Matcher matcher = Pattern.compile(reg).matcher(str);
  List<String> list = new ArrayList<String>();
  while (matcher.find()) {
   list.add(matcher.group(index));
  }
  return list;
 }
  
 public String findString(String reg, String str, int index) {
  String returnStr = null;
  List<String> list = this.find(reg, str, index);
  if (list.size() != 0)
   returnStr = list.get(0);
  return returnStr; 
 }
 
 public String findString(String reg, String str) {
  String returnStr = null;
  List<String> list = this.find(reg, str);
  if (list.size() != 0)
   returnStr = list.get(0);
  return returnStr;
 }
 
  
 
 public static void main(String[] args) {
  RegExp re = new RegExp();
  System.out.println(re.find("(a)b", "ababab", 1));
 }
}

然后開始來解析了,很簡單,一個正則即可:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public class ParseKeyword {
  
 public List<String> getKeywords(String p){
  String reg = "(?<=(?<!\\\\)\\$\\{)(.*?)(?=(?<!\\\\)\\})";
  RegExp re = new RegExp();
  List<String> list = re.find(reg, p);
  return list;
 }
  
 public static void main(String[] args) {
  ParseKeyword p = new ParseKeyword();
  System.out.println(p.getKeywords("a${a}a"));
  System.out.println(p.getKeywords("a\\${a}a"));
  System.out.println(p.getKeywords("a${a\\}a"));
  System.out.println(p.getKeywords("a${a\\}a}a"));
  System.out.println(p.getKeywords("a${a}a${"));
  System.out.println(p.getKeywords("a${ab}a${a}"));
 }
}

解析這個參數符號,要掌握的主要是正則,其中尤其以預查模式(推薦一篇預查模式的文章),然后其它的就是一些字符串的操作方法了。

總結

以上就是這篇文章的全部內容改了,希望本文的內容能對大家有用,如果有疑問大家可以留言交流。

原文鏈接:http://www.cnblogs.com/zhangfei/p/4797622.html

延伸 · 閱讀

精彩推薦
686
主站蜘蛛池模板: 久久男人的天堂 | 色网站免费观看 | 中文字幕在线播放不卡 | 免费a观看 | 日本免费一区二区三区四区 | 国产jjizz一区二区三区视频 | 毛片免费在线观看 | 欧美1区2区在线观看 | 欧美一级淫片a免费播放口 九九视频精品在线 | 毛片在线免费视频 | 久久97视频| 久久久综合久久久 | 久久久大片| 欧美精品一级 | 国产亚洲精品美女久久久 | 国产免费成人 | 久久日本 | 精品一区二区三区日本 | 久久久久国产一区二区三区不卡 | 国产免费一级淫片a级中文 99国产精品自拍 | 成人污在线| 色玖玖综合| 久久久一区二区三区精品 | 亚洲欧洲日产v特级毛片 | 久久久一区二区三区精品 | 欧美精品久久天天躁 | 欧美日韩亚州综合 | 日韩av片网站 | 永久免费黄色大片 | 久久国产精品久久精品国产演员表 | 精品一区二区三区免费看 | 久久老司机精品视频 | sm高h视频| 国产精品成人久久 | 黄色片在线免费播放 | 亚洲性生活免费视频 | bt 自拍 另类 综合 欧美 | 蜜桃网站在线 | 香蕉成人在线观看 | 久久av免费 | 国产资源在线视频 |