程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> 用,號分隔的正則表達式

用,號分隔的正則表達式

編輯:關於ASP.NET

先給一個例子吧。

有下列字符串:

“reservation,rental,type”

我想用根據,號,將該字符串轉換成數組。不用說,有一個最簡單的方法,用 string.Split(new char[]{‘,’})可以輕松辦到。

1 string[] strs = string.Split(new char[]{','};
2 foreach (string str in strs)
3 {
4     //...
5 }

但是,假設某一個數據中本身就包含了,號呢?例如:

“reser,vation,rental,type”

假設reser,vation本身是一個完整的數據,這下如果再用上面的方法就會出大問題了 。如果能夠用\,之類的標記,將該,號保留在數據中,而不是用作分隔字符串的標記就好 了。

所以,思考了一下,試著用正則表達式來解決這個問題。先將代碼粘貼在這裡,不知 道是否有更好的方法。

1 var spliters = Regex.Split(values, @"([^\\],)");

1 for (int i = 0; i < spliters.Length; ++i)
2              {
3                 if (i % 2 ==  1)
4                 {
5                      spliters[i - 1] += spliters[i].Substring(0, 1);
6                      spliters[i] = spliters[i].Substring (1);
7                 }
8
9              }
1 假設我用上面的正則表達式來分析一下數據。
1  “reser\,vation,rental,type”
1 會得到一下結果
1 reser\,vati
1  
1 rental
1 ,
1 type
1 你會發現,第一個n和,號被作為分隔符捕獲 。這顯然不是我所需要的,所以又用了下面的for循環對該數據進行修正。

1 for (int i = 0; i < spliters.Length; ++i)
2              {
3                 if (i % 2 ==  1)
4                 {
5                      spliters[i - 1] += spliters[i].Substring(0, 1);
6                      spliters[i] = spliters[i].Substring (1);
7                 }
8
9              }

修正後的結果是

reser\,vation
,
rental
,
type

不知道大家是否有更好的想法。先謝謝了。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved