programing

구분된 문자열에서 후행 구분 문자 제거

goodjava 2022. 11. 20. 11:10

구분된 문자열에서 후행 구분 문자 제거

문자열에서 마지막 문자를 제거하는 가장 빠른 방법은 무엇입니까?

나는 같은 끈이 있다.

a,b,c,d,e,

마지막 ' '를 삭제하고 나머지 문자열을 되돌립니다.

OUTPUT: a,b,c,d,e

이것을 가장 빨리 할 수 있는 그대로입니다.

질문과는 달리rtrim()는 두 번째 인수에 나열된 임의의 수의 문자를 문자열 끝에서 삭제합니다.콤마를 1개만 사용하는 경우는, 다음의 코드를 사용합니다.

$newarraynama = rtrim($arraynama, ",");

근데 저 같은 경우에는 쉼표와 공백이 두 글자여서 이렇게 바꿨어요.

$newarraynama = rtrim($arraynama, " ,");

문자열 끝의 쉼표와 공백이 모두 삭제되어 반환됩니다.a, b, c, d, e어느쪽이든a, b, c, d, e,,a, b, c, d, e,,,,a, b, c, d, e, 또는a, b, c, d, e , ,, , ,

그러나 쉼표가 여러 개일 수 있지만 마지막 쉼표만 삭제해야 하는 경우rtrim()전혀 사용하지 마십시오. 질문에 직접 답변하는 솔루션에 대해서는 다른 답변을 참조하십시오.

하지만,rtrim()추가 캐릭터의 존재 여부를 모르면 좋은 선택이 될 수 있습니다.와는 달리substr반환되는 기반 솔루션a, b, c, d, e부터a, b, c, d, e

다음을 사용할 수 있습니다.

echo substr('a,b,c,d,e,', 0, -1);
# => 'a,b,c,d,e'

그러면 시작부터 시작까지 문자열이 분리되며 두 번째 마지막 문자가 포함됩니다.즉, 마지막 문자를 제외한 전체 문자열을 분리합니다.

마지막 문자가 멀티바이트일 수 있는 경우mb_substr()대신 사용해야 합니다.

대체 수단substr함수는 다음과 같습니다.

substr_replace($string, "", -1)

가장 빠른가요?모르겠어요, 하지만 이 모든 대안들이 너무 빨라서 문제가 되지 않을 거라고 장담해요.

이 함수는 멀티바이트가 아니기 때문에 마지막 문자가 멀티바이트일 경우 바람직하지 않은 결과가 발생합니다.

사용할 수 있습니다.

substr(string $string, int $start, int[optional] $length=null);

PHP 설명서의 기판을 참조하십시오.문자열의 일부를 반환합니다.

문자열 앵커 "$"의 정규식 끝 사용

$string = preg_replace("/,$/", '', $string);

"가장 빠른 최선의 코드는 존재하지 않는 코드입니다."

엣지 케이스에 대해서 말하자면, 루프 후에 나타나는 후행 콤마에는 다음과 같은 매우 일반적인 문제가 있습니다.

$str = '';
foreach ($array as $value) {
    $str .= "$value,";
}

첫 번째 질문에서도 그럴 수 있을 것 같아요이 경우 후행 콤마를 전혀 추가하지 않는 것이 가장 빠른 방법입니다.

$str = '';
foreach ($array as $value) {
    $str .= $str ? "," : "";
    $str .= $value;
}

여기에서는 $str에 이미 값이 있는지 확인하고 있습니다.그렇다면 다음 항목 앞에 쉼표를 추가하여 결과에 쉼표가 추가되지 않습니다.

언급URL : https://stackoverflow.com/questions/5592994/remove-trailing-delimiting-character-from-a-delimited-string