אתגר קטן למעוניינים
-
להלן אתגר נחמד של קוד שבו יש 4 שדות של שמות במסד הנתונים, שם משפחה שם פרטי בעל, שם משפחה אישה (למקרה והתיק משוייך גם ללפני הנישואין) ושם פרטי אישה.
כעת ייתכנו תיקים שבהם יש רק אישה (כגון גרושה או רווקה) ואז ממלאים שם משפחה, ושם פרטי אישה, ואת שם הבעל משאירים ריק, אם זה תיק של זוג נשוי נורמטיבי, ממלאים שם משפחה, שם פרטי בעל, ושם פרטי אישה.
האתגר הוא לעשות פונקציה של fullname בצורה קריאה ואנושית לצורכי מכתבים וכדומה. כאשר יש לנו 4 סיטואציות, התיק הנורמלי, שם משפחה ושם פרטי של 2 בני הזוג יוצג כך: "כהן אהרן ואלישבע" אם זה תיק של רווק/גרוש יוצג כהן אהרן בלבד, תיק של רווקה "כהן אלישבע" תיק של זוג עם התייחסות לטרום חתונה "כהן אהרן ובוזגלו אלישבע". אז יש כאן בעצם הוספות של ווים ורווחים (אצלי אין דבר כזה להוסיף רווחים כפולים!) לפי הענין.
זה הקוד הכי קצר שהצלחתי לעשות ב vb6, אם יש למישהו דרך קצרה יותר בדוט נט או sql אשמח לשמוע.Function GetFullName(ByVal firsname, ByVal LastName, ByVal firsnamewoman, ByVal LastNameWoman) If Len(firsname) > 0 Then firsname = " " & firsname If (IsNull(LastNameWoman) Or Len(LastNameWoman) = 0) And Len(firsnamewoman) > 0 And Len(firsname) > 0 Then firsnamewoman = "ו" & firsnamewoman If Len(firsnamewoman) > 0 Then firsnamewoman = " " & firsnamewoman If Len(LastNameWoman) > 0 Then LastNameWoman = " ו" & LastNameWoman GetFullName = LastName & firsname & LastNameWoman & firsnamewoman End Function
פורסם במקור בפורום CODE613 ב12/03/2014 12:34 (+02:00)
-
זה בC#, זה מטפל גם בהעדר שם מסויים.
string SafeJoin(string a, string other, String separator) { if(string.IsNullOrWhiteSpace(a) || string.IsNullOrWhiteSpace(other)) separator = null; return string.Concat(a, separator, other); } string CombinNames(string firstName, string lastName, string firstNameWomen, string lastNameWomen) { string men = SafeJoin(firstName, lastName, " "); string women = lastNameWomen == lastName ? firstNameWomen : SafeJoin(firstNameWomen, lastNameWomen, " "); return SafeJoin(men, women, " ו"); }
פורסם במקור בפורום CODE613 ב12/03/2014 15:28 (+02:00)
-
ב SQL SERVER כדי לחסוך כאב ראש הגדרתי תחילה את כולם למחרוזת באורך אפס, מקוה שזה לא זולל ביצועים.
CREATE FUNCTION [dbo].[GetFullName] ( -- Add the parameters for the function here @FName nvarchar(100),@LName nvarchar (100),@FNameW nvarchar (100),@LNameW nvarchar (100) ) RETURNS nvarchar (400) AS BEGIN set @FName = ISNULL(@FName ,'') set @LName = ISNULL(@LName ,'') set @FNameW = ISNULL(@FNameW ,'') set @LNameW = ISNULL(@LNameW ,'') if LEN (@FName) > 0 set @FName = ' ' + @FName if len(@LNameW) = 0 and LEN(@FNameW)>0 and len(@FName)>0 set @FNameW = 'ו' + @FNameW if len(@FNameW)> 0 set @FNameW = ' ' + @FNameW if LEN(@LNameW)>0 set @LNameW = ' ו' + @LNameW RETURN @LName + @FName + @LNameW + @FNameW; END GO
פורסם במקור בפורום CODE613 ב24/03/2014 14:05 (+02:00)