הסרת רווחים ממחרוזת –TRIM אמיתי

By | 11 ביולי 2011

לאחרונה קראתי את טורו המחכים כרגיל של גרי רשף בנושא היפוך חכם של טקסט עברי מעורב עם אנגלית ומספרים. כל מי שעובד מול IBM AS/400 למשל, מכיר בעיה זו היטב.

לאחר שסידרנו את הטקסט העברי כך שיהיה כולו בכיוון הנכון (From the RIGHT side) לעיתים עלינו להסיר רווחים מיותרים בתוך הטקסט. הכוונה אינה לרווחים באחד מקצוות הטקסט אשר יוסרו בקלות באמצעות RTRIM LTRIM  אלא לרווח בתוך הטקסט עצמו. לדוגמה במקום SQL Server נקבל SQL Server.

פתרון אלגנטי לבעיה זו יכול להיות באמצעות כתיבה של פונקציית TRIM חדשה אשר מוחקת רווחים כפולים בתוך הטקסט ורווחים רגילים בקצוות הטקסט.

declare @name varchar(50) = 'SQL   Server' ;

 

 

select @name as Original_Text,


replace(replace(replace(@name,' ','<>'),'><',"),'<>',' ')
as Trimed_Text

 

SQL Server new Trim

 

איך עובד הקסם?

אנו מבצעים שלוש החלפות:

  1. החלפת כל הרווחים בזוג הסימנים גדול מ…, קטן מ… – <> כך שה- "SQL Server" הופך ל- "SQL<><><>Server".
  2. החלפת כל הזוגות "><" ב- "" כלומר הסרתם. כך "SQL<><><>Server" הופך ל- "SQL<>Server" .
  3. החלפה שלישית : הפיכת "<>" לרווח : "SQL<>Server" הופך ל- "SQL Server" (מ.ש.ל) .

כמובן שאפשר להשתמש בכל צמד של סימנים על מנת להשיג תוצאה דומה.

תודה לשייקה ענני על הרעיון למאמר זה.

Share

כתיבת תגובה

האימייל לא יוצג באתר.