ตุลาคม 21, 2019, 03:45:18 pm *
ยินดีต้อนรับคุณ, บุคคลทั่วไป กรุณา เข้าสู่ระบบ หรือ ลงทะเบียน
ส่งอีเมล์ยืนยันการใช้งาน?

เข้าสู่ระบบด้วยชื่อผู้ใช้ รหัสผ่าน และระยะเวลาในเซสชั่น
   หน้าแรก   ช่วยเหลือ เข้าสู่ระบบ สมัครสมาชิก  
หน้า: [1]   ลงล่าง
  พิมพ์  
ผู้เขียน หัวข้อ: อยากได้เฉพาะชื่อไฟล์ต้องทำอย่างไร?  (อ่าน 2886 ครั้ง)
0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้
ShadowMan
Administrator
Hero Member
*****
ออฟไลน์ ออฟไลน์

เพศ: ชาย
กระทู้: 8272


ShadowWares


| |
« เมื่อ: พฤษภาคม 03, 2010, 04:46:42 pm »

วันนี้ไปเจอคำถามน่าสนใจมาเกี่ยวกับ "การตัดนามสกุลของไฟล์ (File Extension) ออก"
เลยนึกขึ้นได้ว่าผมเหมือนจะเคยเขียน Perl ได้กับเค้าอยู่นิดหน่อย แต่ไม่แน่ใจว่า จะตีโจทย์ข้อนี้ได้หรือเปล่า
นั่งคิดว่า "เอ... เขียนเป็นป่าวหว่า? ไม่รู้หละข้อนี้ต้องจัดการให้ได้"
ก็เลยหา Perl หาไม่เจอแงะ ไม่ได้ลงไว้ หันซ้ายหันขวา อ๋อ... ลง Linux บน VMWare ไว้นี่หน่า ปัญหาใหม่มาอีกแล้ว ลืมไปแล้วว่า VMWare ยังไง
มั่วไปมั่วมาอยู่เกือบ 3 นาที คิดโจทย์ออกแล้ว แต่ลืมการสั่งรัน Perl ชีวิตนี้ทำไมต้องรู้อะไรมากมาย กว่าจะทำอะไรได้ซักอย่าง... (พูดให้เวอร์เข้าไว้)

เอาหละ มาเริ่มกันเลย สมมุตว่าชื่อไฟล์ที่เป็นไปได้ ประมาณนี้:

1) MyFile.txt ตัด .txt ออก จะได้ MyFile ชื่อไฟล์ไม่มี .
2) MyFile.New.doc ตัด .doc ออก จะได้ MyFile.New ชื่อไฟล์มี .
3) MyFile จะได้ MyFile
มีเฉพาะชื่อไฟล์

ง่ายๆเลย อยากได้นามสกุลก็ค้นหาจุด แล้วตัดสิ่งหลังจุดออกไปซะ ก็จะได้ซื่อไฟล์แล้ว ใช่ เท่านั้นก็เสร็จ แต่คิดไปคิดมาไอ้เจ้าข้อ 2) นี่สิตัวยุ่ง ชื่อไหล์ดันมีจุดด้วย (งานเข้าแล้ว) ปัญหามีไว้แก้ ก็ว่ากันต่อไป ดู code เลยดีกว่า พูดมากชักจะง่วงนอนละ

Code:
#1/usr/bin/perl

my $full_nam,@sp,$i;
my $full_name = $ARGV[0];

@sp = split /\./, $full_name;

print "this is your filename: ";
if(@sp>1){
for($i=0; $i<@sp-1; $i++) {
print @sp[i];
if($i<@sp-2){
print ".";
}
}
}
else{
print @sp[0];
}

เป็น code ที่ตรงไปตรงมาครับ ยังทำได้อีกหลากหลายวิธี เพราะ Perl มีความสามารถด้าน String manipulation ค่อนข้างสูง

ฟังก์ชั่นที่มีประโยชน์สามาารถนำมาปรับใช้ใด้ตามความต้องการ
- substr
- index
- chop
- eval
- rindex
- ..
.



บันทึกการเข้า

By SDW: Do No Wrong Is Do Nothing
          If you want to increase your success rate, double your failure rate
หน้า: [1]   ขึ้นบน
  พิมพ์  
 
กระโดดไป: