3

GUIDS を文字列行として保存する方法が異なります。

1. Accessibility|5102d73a-1b0b-4461-93cd-0c024738c19e
2. 5102d73a-1b0b-4461-93cd-0c024738c19e;#5102d73a-1b0b-4461-93cd-0c024733d52d
3. |;#5102d73a-1b0b-4461-93cd-0c024738c19e;#SharePointTag|5102d73a-1b0b-4461-93cd-0c024733d52d
3. Business pages|;#5102d73a-1b0b-4461-93cd-0c024738cz13;#SharePointTag|5102d73a-1b0b-4461-93cd-0c024733d52d

このタグを解析して、最終的に Guid のリスト タイプを取得する方法を教えてください。正規表現はそのような状況で役立つのでしょうか?

4

4 に答える 4

5

管理されたメタデータ、用語ストア ID、および用語セット ID で遊んでいるようです:)

通常の正規表現 (以下の "p" 変数) を使用するだけです。

string c1 = "Accessibility|5102d73a-1b0b-4461-93cd-0c024738c19e";
string c2 = "5102d73a-1b0b-4461-93cd-0c024738c19e;#5102d73a-1b0b-4461-93cd-0c024733d52d";
string c3 = "|;#5102d73a-1b0b-4461-93cd-0c024738c19e;#SharePointTag|5102d73a-1b0b-4461-93cd-0c024733d52d";
string c4 = "Business pages|;#5102d73a-1b0b-4461-93cd-0c024738cz13;#SharePointTag|5102d73a-1b0b-4461-93cd-0c024733d52d";
string p = @"([a-zA-Z0-9]{8}[-][a-zA-Z0-9]{4}[-][a-zA-Z0-9]{4}[-][a-zA-Z0-9]{4}[-][a-zA-Z0-9]{12})";

MatchCollection mc;

Console.WriteLine("#1");
mc = Regex.Matches(c1, p);
foreach (var id in mc)
    Console.WriteLine(id);

Console.WriteLine("#2");
mc = Regex.Matches(c2, p);
foreach (var id in mc)
    Console.WriteLine(id);

Console.WriteLine("#3");
mc = Regex.Matches(c3, p);
foreach (var id in mc)
    Console.WriteLine(id);

Console.WriteLine("#4");
mc = Regex.Matches(c4, p);
foreach (var id in mc)
    Console.WriteLine(id);

どの出力:

#1
5102d73a-1b0b-4461-93cd-0c024738c19e
#2
5102d73a-1b0b-4461-93cd-0c024738c19e
5102d73a-1b0b-4461-93cd-0c024733d52d
#3
5102d73a-1b0b-4461-93cd-0c024738c19e
5102d73a-1b0b-4461-93cd-0c024733d52d
#4
5102d73a-1b0b-4461-93cd-0c024738cz13
5102d73a-1b0b-4461-93cd-0c024733d52d
Press any key to continue...
于 2012-05-15T14:52:31.320 に答える
4
var possibleGuids = myString.Split("|;#".ToCharArray(), 
                                   StringSplitOptions.RemoveEmptyEntries);
Guid g;
foreach(var poss in possibleGuids)
{
  if(Guid.TryParse(poss, out g))
  {
      // g contains a guid!
  }
}
于 2012-05-15T14:29:20.780 に答える
2
string sContent = "your data"; // any of your four forms of input
string sPattern = @"([a-z0-9]*[-]){4}[a-z0-9]*";

MatchCollection mc = Regex.Matches(sContent, sPattern );

foreach (var sGUID in mc)
{
    // Do whatever with sGUID
}
于 2012-05-15T14:28:25.730 に答える
1

たとえば、文字列を分割できます

 "fist|second".Split('|')

GUID の文字列を取得したら、それを GUID に変換します。

 Guid = new Guid(myString);

1行目用

var guid = new Guid("Accessibility|5102d73a-1b0b-4461-93cd-0c024738c19e".Split("|")[1]);

二行目用

var myArray = "5102d73a-1b0b-4461-93cd-0c024738c19e;#5102d73a-1b0b-4461-93cd-0c024733d52d".Split(';');
var guid1 = new Guid(myArray[0]);
var guid2 = new Guid(myArray[1].Replace('#',''));

だから、あなたはそのように進むことができます..

于 2012-05-15T14:24:37.730 に答える