MATLAB - สตริง

การสร้างสตริงอักขระนั้นค่อนข้างง่ายใน MATLAB ที่จริงเราใช้มาหลายครั้งแล้ว ตัวอย่างเช่นคุณพิมพ์สิ่งต่อไปนี้ในพรอมต์คำสั่ง -

my_string = 'Tutorials Point'

MATLAB จะดำเนินการตามคำสั่งข้างต้นและส่งกลับผลลัพธ์ต่อไปนี้ -

my_string = Tutorials Point

MATLAB ถือว่าตัวแปรทั้งหมดเป็นอาร์เรย์และสตริงถือเป็นอาร์เรย์อักขระ ให้เราใช้ไฟล์whos คำสั่งตรวจสอบตัวแปรที่สร้างขึ้นด้านบน -

whos

MATLAB จะดำเนินการตามคำสั่งข้างต้นและส่งกลับผลลัพธ์ต่อไปนี้ -

Name           Size            Bytes  Class    Attributes
my_string      1x16               32  char

ที่น่าสนใจคือคุณสามารถใช้ฟังก์ชันการแปลงตัวเลขเช่น uint8 หรือ uint16เพื่อแปลงอักขระในสตริงเป็นรหัสตัวเลข char ฟังก์ชันแปลงเวกเตอร์จำนวนเต็มกลับเป็นอักขระ -

ตัวอย่าง

สร้างไฟล์สคริปต์และพิมพ์รหัสต่อไปนี้ -

my_string = 'Tutorial''s Point';
str_ascii = uint8(my_string)        % 8-bit ascii values
str_back_to_char= char(str_ascii)  
str_16bit = uint16(my_string)       % 16-bit ascii values
str_back_to_char = char(str_16bit)

เมื่อคุณเรียกใช้ไฟล์จะแสดงผลลัพธ์ต่อไปนี้ -

str_ascii =

   84  117  116  111  114  105   97  108   39  115   32   80  111  105  110  116

str_back_to_char = Tutorial's Point
str_16bit =

   84  117  116  111  114  105   97  108   39  115   32   80  111  105  110  116

str_back_to_char = Tutorial's Point

อาร์เรย์อักขระสี่เหลี่ยม

สตริงที่เราพูดถึงจนถึงตอนนี้คืออาร์เรย์อักขระหนึ่งมิติ อย่างไรก็ตามเราต้องจัดเก็บมากกว่านั้น เราจำเป็นต้องจัดเก็บข้อมูลที่เป็นข้อความที่มีมิติมากขึ้นในโปรแกรมของเรา สิ่งนี้ทำได้โดยการสร้างอาร์เรย์อักขระสี่เหลี่ยม

วิธีที่ง่ายที่สุดในการสร้างอาร์เรย์อักขระสี่เหลี่ยมคือการต่ออาร์เรย์อักขระหนึ่งมิติสองมิติขึ้นไปทั้งแนวตั้งหรือแนวนอนตามต้องการ

คุณสามารถรวมสตริงในแนวตั้งได้ด้วยวิธีใดวิธีหนึ่งดังต่อไปนี้:

  • การใช้ตัวดำเนินการเชื่อมต่อ MATLAB []และคั่นแต่ละแถวด้วยอัฒภาค (;) โปรดทราบว่าในวิธีนี้แต่ละแถวต้องมีจำนวนอักขระเท่ากัน สำหรับสตริงที่มีความยาวต่างกันคุณควรเว้นวรรคตามความจำเป็น

  • ใช้ charฟังก์ชัน หากสตริงมีความยาวต่างกันให้ใช้อักขระที่สั้นกว่าโดยมีช่องว่างต่อท้ายเพื่อให้แต่ละแถวมีจำนวนอักขระเท่ากัน

ตัวอย่าง

สร้างไฟล์สคริปต์และพิมพ์รหัสต่อไปนี้ -

doc_profile = ['Zara Ali                             '; ...
               'Sr. Surgeon                          '; ...
               'R N Tagore Cardiology Research Center']
doc_profile = char('Zara Ali', 'Sr. Surgeon', ...
                  'RN Tagore Cardiology Research Center')

เมื่อคุณเรียกใช้ไฟล์จะแสดงผลลัพธ์ต่อไปนี้ -

doc_profile =
Zara Ali                             
Sr. Surgeon                          
R N Tagore Cardiology Research Center
doc_profile =
Zara Ali                            
Sr. Surgeon                         
RN Tagore Cardiology Research Center

คุณสามารถรวมสตริงในแนวนอนได้ด้วยวิธีใดวิธีหนึ่งดังต่อไปนี้:

  • การใช้ตัวดำเนินการเชื่อมต่อ MATLAB []และแยกสตริงอินพุตด้วยลูกน้ำหรือช่องว่าง วิธีนี้จะรักษาช่องว่างต่อท้ายในอาร์เรย์อินพุต

  • การใช้ฟังก์ชันการต่อสายอักขระ strcat. วิธีนี้จะลบช่องว่างต่อท้ายในอินพุต

ตัวอย่าง

สร้างไฟล์สคริปต์และพิมพ์รหัสต่อไปนี้ -

name =     'Zara Ali                             ';
position = 'Sr. Surgeon                          '; 
worksAt =  'R N Tagore Cardiology Research Center';
profile = [name ', ' position ', ' worksAt]
profile = strcat(name, ', ', position, ', ', worksAt)

เมื่อคุณเรียกใช้ไฟล์จะแสดงผลลัพธ์ต่อไปนี้ -

profile = Zara Ali      , Sr. Surgeon      , R N Tagore Cardiology Research Center
profile = Zara Ali,Sr. Surgeon,R N Tagore Cardiology Research Center

การรวมสตริงเข้ากับเซลล์อาร์เรย์

จากการสนทนาก่อนหน้านี้เป็นที่ชัดเจนว่าการรวมสตริงที่มีความยาวต่างกันอาจเป็นความเจ็บปวดเนื่องจากสตริงทั้งหมดในอาร์เรย์จะต้องมีความยาวเท่ากัน เราใช้ช่องว่างที่ท้ายสตริงเพื่อปรับความยาวให้เท่ากัน

อย่างไรก็ตามวิธีที่มีประสิทธิภาพมากขึ้นในการรวมสตริงคือการแปลงอาร์เรย์ผลลัพธ์เป็นอาร์เรย์ของเซลล์

MATLAB เซลล์อาร์เรย์สามารถเก็บข้อมูลขนาดและประเภทต่างๆในอาร์เรย์ได้ อาร์เรย์ของเซลล์เป็นวิธีที่ยืดหยุ่นกว่าในการจัดเก็บสตริงที่มีความยาวต่างกัน

cellstr ฟังก์ชันแปลงอาร์เรย์อักขระเป็นอาร์เรย์ของสตริงของเซลล์

ตัวอย่าง

สร้างไฟล์สคริปต์และพิมพ์รหัสต่อไปนี้ -

name =     'Zara Ali                             ';
position = 'Sr. Surgeon                          '; 
worksAt =  'R N Tagore Cardiology Research Center';
profile = char(name, position, worksAt);
profile = cellstr(profile);
disp(profile)

เมื่อคุณเรียกใช้ไฟล์จะแสดงผลลัพธ์ต่อไปนี้ -

{                                                                               
   [1,1] = Zara Ali                                                              
   [2,1] = Sr. Surgeon                                                           
   [3,1] = R N Tagore Cardiology Research Center                                 
}

ฟังก์ชันสตริงใน MATLAB

MATLAB มีฟังก์ชันสตริงมากมายในการสร้างการรวมการแยกวิเคราะห์การเปรียบเทียบและการจัดการสตริง

ตารางต่อไปนี้แสดงคำอธิบายสั้น ๆ ของฟังก์ชันสตริงใน MATLAB -

ฟังก์ชัน วัตถุประสงค์
ฟังก์ชั่นสำหรับจัดเก็บข้อความในอาร์เรย์อักขระรวมอาร์เรย์อักขระ ฯลฯ
ช่องว่าง สร้างสตริงของอักขระว่าง
cellstr สร้างอาร์เรย์เซลล์ของสตริงจากอาร์เรย์อักขระ
ถ่าน แปลงเป็นอาร์เรย์อักขระ (สตริง)
iscellstr กำหนดว่าอินพุตเป็นอาร์เรย์ของสตริงของเซลล์หรือไม่
ischar กำหนดว่ารายการเป็นอาร์เรย์อักขระหรือไม่
sprintf จัดรูปแบบข้อมูลเป็นสตริง
strcat เชื่อมสตริงในแนวนอน
strjoin รวมสตริงในอาร์เรย์เซลล์เป็นสตริงเดียว
ฟังก์ชันสำหรับระบุส่วนของสตริงค้นหาและแทนที่สตริงย่อย
ischar กำหนดว่ารายการเป็นอาร์เรย์อักขระหรือไม่
isletter องค์ประกอบอาร์เรย์ที่เป็นตัวอักษร
isspace องค์ประกอบอาร์เรย์ที่เป็นอักขระช่องว่าง
isstrprop กำหนดว่าสตริงเป็นประเภทที่ระบุหรือไม่
sscanf อ่านข้อมูลที่จัดรูปแบบจากสตริง
strfind ค้นหาสตริงหนึ่งในอีกสตริง
strrep ค้นหาและแทนที่สตริงย่อย
strsplit แยกสตริงที่ตัวคั่นที่ระบุ
strtok ส่วนที่เลือกของสตริง
validatestring ตรวจสอบความถูกต้องของสตริงข้อความ
symvar กำหนดตัวแปรสัญลักษณ์ในนิพจน์
regexp จับคู่นิพจน์ทั่วไป (พิจารณาตัวพิมพ์เล็กและใหญ่)
regexpi จับคู่นิพจน์ทั่วไป (ไม่คำนึงถึงตัวพิมพ์เล็กและใหญ่)
regexprep แทนที่สตริงโดยใช้นิพจน์ทั่วไป
regexptranslate แปลสตริงเป็นนิพจน์ทั่วไป
ฟังก์ชั่นสำหรับการเปรียบเทียบสตริง
strcmp เปรียบเทียบสตริง (พิจารณาตัวพิมพ์เล็กและใหญ่)
strcmpi เปรียบเทียบสตริง (ไม่คำนึงถึงตัวพิมพ์เล็กและใหญ่)
strncmp เปรียบเทียบอักขระ n ตัวแรกของสตริง (พิจารณาตัวพิมพ์เล็กและใหญ่)
strncmpi เปรียบเทียบอักขระ n ตัวแรกของสตริง (ไม่คำนึงถึงตัวพิมพ์เล็กและใหญ่)
ฟังก์ชันสำหรับการเปลี่ยนสตริงเป็นตัวพิมพ์ใหญ่หรือตัวพิมพ์เล็กสร้างหรือลบช่องว่าง
หนี้ ตัดช่องว่างต่อท้ายจากส่วนท้ายของสตริง
strtrim ลบช่องว่างนำหน้าและต่อท้ายออกจากสตริง
ต่ำกว่า แปลงสตริงเป็นตัวพิมพ์เล็ก
ด้านบน แปลงสตริงเป็นตัวพิมพ์ใหญ่
strjust จัดเรียงอาร์เรย์อักขระ

ตัวอย่าง

ตัวอย่างต่อไปนี้แสดงให้เห็นถึงฟังก์ชันสตริงที่กล่าวถึงข้างต้น -

การจัดรูปแบบสตริง

สร้างไฟล์สคริปต์และพิมพ์รหัสต่อไปนี้ -

A = pi*1000*ones(1,5);
sprintf(' %f \n %.2f \n %+.2f \n %12.2f \n %012.2f \n', A)

เมื่อคุณเรียกใช้ไฟล์จะแสดงผลลัพธ์ต่อไปนี้ -

ans =  3141.592654 
   3141.59 
   +3141.59 
      3141.59 
   000003141.59

การเข้าร่วมสตริง

สร้างไฟล์สคริปต์และพิมพ์รหัสต่อไปนี้ -

%cell array of strings
str_array = {'red','blue','green', 'yellow', 'orange'};

% Join strings in cell array into single string
str1 = strjoin(str_array, "-")
str2 = strjoin(str_array, ",")

เมื่อคุณเรียกใช้ไฟล์จะแสดงผลลัพธ์ต่อไปนี้ -

str1 = red-blue-green-yellow-orange
str2 = red,blue,green,yellow,orange

การค้นหาและการเปลี่ยนสตริง

สร้างไฟล์สคริปต์และพิมพ์รหัสต่อไปนี้ -

students = {'Zara Ali', 'Neha Bhatnagar', ...
            'Monica Malik', 'Madhu Gautam', ...
            'Madhu Sharma', 'Bhawna Sharma',...
            'Nuha Ali', 'Reva Dutta', ...
            'Sunaina Ali', 'Sofia Kabir'};
 
% The strrep function searches and replaces sub-string.
new_student = strrep(students(8), 'Reva', 'Poulomi')
% Display first names
first_names = strtok(students)

เมื่อคุณเรียกใช้ไฟล์จะแสดงผลลัพธ์ต่อไปนี้ -

new_student = 
{
   [1,1] = Poulomi Dutta
}
first_names = 
{
   [1,1] = Zara
   [1,2] = Neha
   [1,3] = Monica
   [1,4] = Madhu
   [1,5] = Madhu
   [1,6] = Bhawna
   [1,7] = Nuha
   [1,8] = Reva
   [1,9] = Sunaina
   [1,10] = Sofia
}

การเปรียบเทียบสตริง

สร้างไฟล์สคริปต์และพิมพ์รหัสต่อไปนี้ -

str1 = 'This is test'
str2 = 'This is text'
if (strcmp(str1, str2))
   sprintf('%s and %s are equal', str1, str2)
else
   sprintf('%s and %s are not equal', str1, str2)
end

เมื่อคุณเรียกใช้ไฟล์จะแสดงผลลัพธ์ต่อไปนี้ -

str1 = This is test
str2 = This is text
ans = This is test and This is text are not equal