구분된 문자열에서 후행 구분 문자 제거
문자열에서 마지막 문자를 제거하는 가장 빠른 방법은 무엇입니까?
나는 같은 끈이 있다.
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
'programing' 카테고리의 다른 글
| mariadb 아래에 tokudb를 설치하는 중, 플러그를 찾을 수 없습니다. (0) | 2022.11.20 |
|---|---|
| 도커 컴포지트 시작 시 데이터베이스 작성 (0) | 2022.11.20 |
| mariadb "too many connections" 오류가 발생하여 웹 사이트가 다운되었습니다. (0) | 2022.11.20 |
| MySQL에서 공백이 있는 열 이름을 선택하는 방법 (0) | 2022.11.11 |
| 페이지를 새로고침하지 않고 양식 제출 (0) | 2022.11.11 |