Heim Backend-Entwicklung C#.Net-Tutorial Wie sortiere ich gemischte Strings in Perl? (Codebeispiel)

Wie sortiere ich gemischte Strings in Perl? (Codebeispiel)

Apr 16, 2019 am 11:40 AM
perl 排序 正则表达式

Das Sortieren in Perl kann mit der vordefinierten Funktion „sort“ erfolgen; diese Funktion sortiert das an sie übergebene Array mithilfe des Quicksort-Algorithmus. Im folgenden Artikel erfahren Sie, wie Sie mit der Funktion sort() Arrays mit Zeichenfolgen in gemischter Form (d. h. alphanumerische Zeichenfolgen) auf verschiedene Weise sortieren können. [Video-Tutorial-Empfehlung: Perl-Tutorial]

Wie sortiere ich gemischte Strings in Perl? (Codebeispiel)

Methode 1: Funktion sort()+substr()

Um Zeichenfolgen anhand von Zahlen zu vergleichen, ist es sehr wichtig, die Zahl aus der Zeichenfolge zu ermitteln. Wir können das String-Array basierend auf diesen Zahlen sortieren.

Mit der Funktion substr() können diese Zahlen aus einem String extrahiert werden. Diese Funktion verwendet als Argument die Anzahl der Zeichen in der Zeichenfolge, ausgenommen Zahlen.

Hinweis: Alle alphanumerischen Zeichenfolgen im Array müssen dieselbe Größe haben.

Beispiel:

1

2

3

4

5

6

7

8

9

10

11

12

13

use strict;

use 5.010;

   

# 用字母数字字符串定义数组值

my @x = qw(prin_4 Keys_8 pubg_12);

print "原数组:\n";

print join " , ", @x; 

# 使用sort()和substr()函数对数组进行排序

my @y = sort { substr($a, 5) <=> substr($b, 5) } @x;

   

# 输出排序的数组

print "\n\n排序的数组:\n";

print join " , ", @y;

Nach dem Login kopieren

Ausgabe:

1

2

3

4

5

原数组:

prin_4 , Keys_8 , pubg_12

 

排序的数组:

prin_4 , Keys_8 , pubg_12

Nach dem Login kopieren

Methode 2: sort()+regulärer Ausdruck

Das Ausführen des obigen Codes ist eine schwierige Aufgabe, wenn die alphanumerische Zeichenfolge etwas komplex ist. Um es einfacher zu machen, können wir reguläre Ausdrücke verwenden.

Beispiel: Wenn das Array „Keys_8_keys“ enthält, ist es schwierig, diesen Fall zu handhaben. Um die Zahlen in der Zeichenfolge korrekt zu filtern, können Sie daher reguläre Ausdrücke verwenden.

Hinweis: Dieser Methode ist es egal, ob die alphanumerischen Zeichenfolgen unterschiedliche Größen haben.

Beispiel:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

use strict;

use 5.010;

   

# Sample string to extract 

# number from

my $str = 'Key_8_key';

   

# Regular expression to extract the number

my ($number) = $str =~ /(\d+)/;

   

# 输出提取的数字

print "从Key_8_key中提取的数字是:$number\n";

   

# 用字母数字字符串定义数组

my @x = qw(pri_4 Key_8_key pubg_12);

   

# 排序前的数组

print "\n排序前的数组:\n";

print join " , ", sort @x;

   

# 使用正则表达式

my @y = sort { ($a =~ /(\d+)/)[0] <=> ($b =~ /(\d+)/)[0] } @x;

   

# 排序后数组

print "\n\n排序后数组\n";

print join " , ", @y;

Nach dem Login kopieren

Ausgabe:

1

2

3

4

5

从Key_8_key中提取的数字是:8

排序前的数组:

Key_8_key , pri_4 , pubg_12

排序后数组

pri_4 , Key_8_key , pubg_12

Nach dem Login kopieren

Hinweis: Wenn das Array Zeichenfolgen enthält, von denen einige keine Zahlen haben, können Sie verwenden 0 ersetzt diese Zahl. Um zu überprüfen, ob die Zeichenfolge keine Zahlen enthält, verwenden Sie den folgenden Code:

1

my @y = sort { (($a =~ /(\d+)/)[0] || 0)  (($b =~ /(\d+)/)[0] || 0) } @x;

Nach dem Login kopieren

Beispiel:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

#!/usr/bin/perl

use strict;

use 5.010;

   

# 混合类型字符串的数组

my @x = qw(pri_4 Key pubg_12);

   

# 使用正则表达式

my @y = sort { (($a =~ /(\d+)/)[0] || 0) <=> 

               (($b =~ /(\d+)/)[0] || 0) } @x;

    

# 输出排序的数组

print "排序后数组:\n";

print join " , ", @y;

Nach dem Login kopieren

Ausgabe:

1

2

排序后数组:

Key , pri_4 , pubg_12

Nach dem Login kopieren

Das ist alles für diesen Artikel, ich hoffe es Kann Es wird für das Lernen aller hilfreich sein. Weitere spannende Inhalte finden Sie in den entsprechenden Tutorial-Kolumnen auf der chinesischen PHP-Website! ! !

Das obige ist der detaillierte Inhalt vonWie sortiere ich gemischte Strings in Perl? (Codebeispiel). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße Artikel -Tags

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So sortieren Sie Fotos nach Aufnahmedatum in Windows 11/10 So sortieren Sie Fotos nach Aufnahmedatum in Windows 11/10 Feb 19, 2024 pm 08:45 PM

So sortieren Sie Fotos nach Aufnahmedatum in Windows 11/10

So sortieren Sie E-Mails in Outlook nach Absender, Betreff, Datum, Kategorie und Größe So sortieren Sie E-Mails in Outlook nach Absender, Betreff, Datum, Kategorie und Größe Feb 19, 2024 am 10:48 AM

So sortieren Sie E-Mails in Outlook nach Absender, Betreff, Datum, Kategorie und Größe

Reguläre PHP-Ausdrücke: Exakte Übereinstimmung und Ausschluss von Fuzzy-Einschlüssen Reguläre PHP-Ausdrücke: Exakte Übereinstimmung und Ausschluss von Fuzzy-Einschlüssen Feb 28, 2024 pm 01:03 PM

Reguläre PHP-Ausdrücke: Exakte Übereinstimmung und Ausschluss von Fuzzy-Einschlüssen

Validierung regulärer PHP-Ausdrücke: Erkennung des Zahlenformats Validierung regulärer PHP-Ausdrücke: Erkennung des Zahlenformats Mar 21, 2024 am 09:45 AM

Validierung regulärer PHP-Ausdrücke: Erkennung des Zahlenformats

So sortieren Sie in Excel So sortieren Sie in Excel Mar 05, 2024 pm 04:12 PM

So sortieren Sie in Excel

So sortieren Sie WPS-Ergebnisse So sortieren Sie WPS-Ergebnisse Mar 20, 2024 am 11:28 AM

So sortieren Sie WPS-Ergebnisse

Wie validiere ich eine E-Mail-Adresse in Golang mithilfe eines regulären Ausdrucks? Wie validiere ich eine E-Mail-Adresse in Golang mithilfe eines regulären Ausdrucks? May 31, 2024 pm 01:04 PM

Wie validiere ich eine E-Mail-Adresse in Golang mithilfe eines regulären Ausdrucks?

So ordnen Sie mehrere Spalten in Power Query per Drag & Drop neu an So ordnen Sie mehrere Spalten in Power Query per Drag & Drop neu an Mar 14, 2024 am 10:55 AM

So ordnen Sie mehrere Spalten in Power Query per Drag & Drop neu an

See all articles