PERL 문자열에서 인접한 두 단어를 바꾸는 더 좋은 방법은 무엇입니까?

아 슐츠

제가 쓰고있는 게임에서 두 개의 이름을 잘못 입력 한 이상한 경우가있었습니다. 그들은 서로를 미러링합니다. 예를 들어 헨리 패트릭과 패트릭 헨리가 있는데, 제가 작성한 코드를 실수로 바꾸고 싶었습니다.

이제 아래의 PERL 코드는 그렇게하지만 임시 교체 문자열 heinous-hack-string은 해킹입니다. 일을하는 더 우아한 방법이 있습니까?

##################
#nameflip.pl
#
# this flips names where I mistakenly switched first-last and last-first
#

use strict;
use warnings;

my $mystr = "There's this guy named Henry Patrick, and there's another guy named Patrick Henry, " . 
  "and I confused them and need to switch them now!";

print "Before: $mystr\n";

print "After: " . stringNameSwitch($mystr, "Patrick", "Henry") . "\n";

##############################
# awful hack of a subroutine.
#
# what regex would do better?
#
# right now I just want to switch (name1 name2) <=> (name2 name1)

sub stringNameSwitch
{
  my $temp = $_[0];
  $temp =~ s/$_[1] +$_[2]/heinous-hack-string/i;
  $temp =~ s/$_[2] +$_[1]/$_[1] $_[2]/i;
  $temp =~ s/heinous-hack-string/$_[2] $_[1]/i;
  return $temp;
}
보로딘

이렇게, 아마도? 지점 리셋 구조는 (?|...)두 개의 이름으로 캡처 할 수 $1$2관계없이 외관의 순서의.

use strict;
use warnings 'all';

my $mystr = <<END;
There's this guy named Henry Patrick,
and there's another guy named Patrick Henry,
and I confused them and need to switch them now!
END

print name_switch($mystr, qw/ Henry Patrick /);

sub name_switch {
    my ($s, $n1, $n2) = @_;

    $s =~ s/\b(?|($n1)\s+($n2)|($n2)\s+($n1))\b/$2 $1/gr;
}

산출

There's this guy named Patrick Henry,
and there's another guy named Henry Patrick,
and I confused them and need to switch them now!

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

JavaScript 문자열에서 동시에 두 개 이상의 단어를 바꾸는 방법은 무엇입니까?

분류에서Dev

Javascript를 사용하여 불규칙한 문자열 접두사를 바꾸는 방법은 무엇입니까?

분류에서Dev

문자열에서 포인트 ( '.')를 포인트 앞의 단어로 바꾸는 방법은 무엇입니까?

분류에서Dev

단어를 고유 한 접두사와 접미사로 바꾸는 방법은 무엇입니까?

분류에서Dev

powershell에서 두 번째 문자를 바꾸는 방법은 무엇입니까?

분류에서Dev

문자열에서 많은 양의 문자를 제거하는 더 간단한 방법은 무엇입니까?

분류에서Dev

Javascript에서 undefined를 확인하는 더 좋은 방법은 무엇입니까?

분류에서Dev

for 문에서 한 배열의 크기를 계산하는 더 좋은 방법은 무엇입니까?

분류에서Dev

팬더에서 두 개를 제외한 모든 열의 값이 일치 할 때 열의 값을 바꾸는 방법은 무엇입니까?

분류에서Dev

접두사 표기법의 이러한 중첩 문자열을 튜플으로 바꾸는 가장 좋은 방법은 무엇입니까?

분류에서Dev

Microsoft Word 문서에서 두 단어를 바꾸는 방법은 무엇입니까?

분류에서Dev

NSDictionary 내에서 문자열의 접두사를 확인하는 방법은 무엇입니까?

분류에서Dev

Perl에서 문자열을 바꾸는 방법은 무엇입니까?

분류에서Dev

angular.js에서 HTTP를 간단한 문자열로 바꾸는 방법은 무엇입니까?

분류에서Dev

C에서 인접한 두 바이트를 복사하는 가장 빠른 방법은 무엇입니까?

분류에서Dev

이 팬더 데이터 프레임의 인덱스 열에서 문자를 제거하는 더 좋은 방법은 무엇입니까?

분류에서Dev

문자열에서 문자의 마지막 인스턴스를 바꾸는 방법은 무엇입니까?

분류에서Dev

std :: string_view에서 문자열 접두사를 제거하는 가장 좋은 방법은 무엇입니까?

분류에서Dev

문자열에서 여러 번 바꾸기를 수행하는 더 좋은 방법이 있습니까?

분류에서Dev

Java 문자열에서 두 개의 연속적인 반전 된 쉼표 ""를 바꾸는 방법은 무엇입니까?

분류에서Dev

SQL을 사용하여 postgre SQL에서 두 번째 단어를 바꾸는 방법은 무엇입니까?

분류에서Dev

문자열의 단어 집합에서 단어를 찾는 가장 좋은 방법은 무엇입니까?

분류에서Dev

해시 DataStructure를 사용하여 perl에서 두 개의 거대한 csv 파일을 비교하는 가장 좋은 방법은 무엇입니까?

분류에서Dev

두 문자열 개체 목록에서 AutoCompleteTextView를 바인딩하는 방법은 무엇입니까?

분류에서Dev

특정 접두사 문자열로 시작하지 않는 폴더 내의 모든 파일 이름을 바꾸는 방법은 무엇입니까?

분류에서Dev

PHP를 사용하여 두 개의 다른 문자열에서 찾은 동일한 단어를 계산하는 방법은 무엇입니까?

분류에서Dev

한 자리 숫자를 같은 숫자와 구두점으로 바꾸는 방법은 무엇입니까?

분류에서Dev

문자열 R에서 두 단어 사이에 여러 텍스트를 얻는 방법은 무엇입니까?

분류에서Dev

모든 폴더와 하위 폴더에 접두사를 추가하는 방법은 무엇입니까? (창문)

Related 관련 기사

  1. 1

    JavaScript 문자열에서 동시에 두 개 이상의 단어를 바꾸는 방법은 무엇입니까?

  2. 2

    Javascript를 사용하여 불규칙한 문자열 접두사를 바꾸는 방법은 무엇입니까?

  3. 3

    문자열에서 포인트 ( '.')를 포인트 앞의 단어로 바꾸는 방법은 무엇입니까?

  4. 4

    단어를 고유 한 접두사와 접미사로 바꾸는 방법은 무엇입니까?

  5. 5

    powershell에서 두 번째 문자를 바꾸는 방법은 무엇입니까?

  6. 6

    문자열에서 많은 양의 문자를 제거하는 더 간단한 방법은 무엇입니까?

  7. 7

    Javascript에서 undefined를 확인하는 더 좋은 방법은 무엇입니까?

  8. 8

    for 문에서 한 배열의 크기를 계산하는 더 좋은 방법은 무엇입니까?

  9. 9

    팬더에서 두 개를 제외한 모든 열의 값이 일치 할 때 열의 값을 바꾸는 방법은 무엇입니까?

  10. 10

    접두사 표기법의 이러한 중첩 문자열을 튜플으로 바꾸는 가장 좋은 방법은 무엇입니까?

  11. 11

    Microsoft Word 문서에서 두 단어를 바꾸는 방법은 무엇입니까?

  12. 12

    NSDictionary 내에서 문자열의 접두사를 확인하는 방법은 무엇입니까?

  13. 13

    Perl에서 문자열을 바꾸는 방법은 무엇입니까?

  14. 14

    angular.js에서 HTTP를 간단한 문자열로 바꾸는 방법은 무엇입니까?

  15. 15

    C에서 인접한 두 바이트를 복사하는 가장 빠른 방법은 무엇입니까?

  16. 16

    이 팬더 데이터 프레임의 인덱스 열에서 문자를 제거하는 더 좋은 방법은 무엇입니까?

  17. 17

    문자열에서 문자의 마지막 인스턴스를 바꾸는 방법은 무엇입니까?

  18. 18

    std :: string_view에서 문자열 접두사를 제거하는 가장 좋은 방법은 무엇입니까?

  19. 19

    문자열에서 여러 번 바꾸기를 수행하는 더 좋은 방법이 있습니까?

  20. 20

    Java 문자열에서 두 개의 연속적인 반전 된 쉼표 ""를 바꾸는 방법은 무엇입니까?

  21. 21

    SQL을 사용하여 postgre SQL에서 두 번째 단어를 바꾸는 방법은 무엇입니까?

  22. 22

    문자열의 단어 집합에서 단어를 찾는 가장 좋은 방법은 무엇입니까?

  23. 23

    해시 DataStructure를 사용하여 perl에서 두 개의 거대한 csv 파일을 비교하는 가장 좋은 방법은 무엇입니까?

  24. 24

    두 문자열 개체 목록에서 AutoCompleteTextView를 바인딩하는 방법은 무엇입니까?

  25. 25

    특정 접두사 문자열로 시작하지 않는 폴더 내의 모든 파일 이름을 바꾸는 방법은 무엇입니까?

  26. 26

    PHP를 사용하여 두 개의 다른 문자열에서 찾은 동일한 단어를 계산하는 방법은 무엇입니까?

  27. 27

    한 자리 숫자를 같은 숫자와 구두점으로 바꾸는 방법은 무엇입니까?

  28. 28

    문자열 R에서 두 단어 사이에 여러 텍스트를 얻는 방법은 무엇입니까?

  29. 29

    모든 폴더와 하위 폴더에 접두사를 추가하는 방법은 무엇입니까? (창문)

뜨겁다태그

보관