PDA

View Full Version : خواندن متغیر از یک فرمت رشته ای



intel_amd
دوشنبه 08 مهر 1392, 04:13 صبح
یک رشته به این شکل دارم "string st="var1=ok1&var2=ok2 حالا ساده ترین و سریع ترین روشی که دوستان پیشنهاد میدن برای اینکه از این رشته محتوای متغییرهای var1 , var2 خوانده شود چیست
تا بشه نمی خوام مثلا از & ها split کنم و بعد از = های هر خونرو بخونم , بیشتر میخام ببینم یک حالتی تو خود C# هست که یک حالت query گیر از این تیپ رشته یا هر فرمت رشته ای که بشه تعریف کرد باشه؟
مثلا بشه یک پترن رشته ای براش تعریف کرد که بفمه بعد از مثلا هر ^ یا & متغییر جدید میاد و قبل = یا مثلا @ variable name میاد و بعد همین علامت variable value میاد و طبق این پترن تعریفی سریع مثلا به فرم زیر مقادیر پس بده : st.var1 , st.var2

؟؟؟


تشکر

tooraj_azizi_1035
دوشنبه 08 مهر 1392, 10:11 صبح
string input = "abc:1|bbbb:2|xyz:45|p:120";
string pattern = @"(?<Key>[^:]+)(?:\:)(?<Value>[^|]+)(?:\|?)";

Dictionary<string, string> KVPs
= ( from Match m in Regex.Matches( input, pattern )
select new
{
key = m.Groups["Key"].Value,
value = m.Groups["Value"].Value
}
).ToDictionary( p => p.key, p => p.value );

foreach ( KeyValuePair<string, string> kvp in KVPs )
Console.WriteLine( "{0,6} : {1,3}", kvp.Key, kvp.Value );

/* Outputs:
abc : 1
bbbb : 2
xyz : 45
p : 120
*/



لینک:http://omegacoder.com/?p=245

intel_amd
دوشنبه 08 مهر 1392, 10:33 صبح
الان بازم که نمیشه بپرسم input.apc و چاپ کنه 1 یا input.bbbb و چاپ کنه 2

intel_amd
دوشنبه 08 مهر 1392, 13:33 عصر
اما بازم خوب بود از همین استفاده کردم ممنون
این پترنی که تعریف شده میشه یک توضیح بدید که چجوریه و چجوری میشه به پترنی تغییرش داد که spliter هارو & بشناسه و بجای : هم = بشناسه؟

intel_amd
دوشنبه 08 مهر 1392, 13:42 عصر
اینجوری تغییرش دادم تا بجای | بیاد & بشناسه و بجای : بیاد = بشناسه اما لطفا یک تفسیری بر این پترن بدید تشکر

"(?<Key>[^=]+)(?:\=)(?<Value>[^&]+)(?=\|?)";