Logo

Programming-Idioms

Create string t consisting in the 5 last characters of string s.
Make sure that multibyte characters are properly handled.
Implementation
PHP

Implementation edit is for fixing errors and enhancing with metadata. Please do not replace the code below with a different implementation.

Instead of changing the code of the snippet, consider creating another PHP implementation.

Be concise.

Be useful.

All contributions dictatorially edited by webmasters to match personal tastes.

Please do not paste any copyright violating material.

Please try to avoid dependencies to third-party libraries and frameworks.

Other implementations
String t = s;
if (s.length()>= 5)
	t = s.substring(s.length()-5);
var t = s.slice(-5);
t = s[-5:]
var n = s.length;
var t = s.substring(n-5, n);
t = s[-5..-1]
string t = s[$-5..$];
Function RightStr(const AText: AnsiString; const ACount: Integer): AnsiString;
var j,l:integer;
begin
  l:=length(atext);
  j:=ACount;
  if j>l then j:=l;
  Result:=Copy(AText,l-j+1,j);
end;
t = drop (length s - 5) s
t := string([]rune(s)[len([]rune(s))-5:])
(let [t (clojure.string/join (take-last 5 s))])
[T5, T4, T3, T2, T1 | _] = lists:reverse(S),
T = [T1, T2, T3, T4, T5].
var t = s.Substring(s.Length - 5);
t = String.slice(s, -5, 5)
(setf *t* (subseq s (- (length s) 5)))
character(len=5) :: t
t = s(len(s)-4:)
IDENTIFICATION DIVISION.
PROGRAM-ID. suffix.
PROCEDURE DIVISION.
    MOVE FUNCTION LENGTH(s) TO len
    COMPUTE pos = (len - 5) + 1
    MOVE    s(pos:) TO t    	 	
STOP RUN.
t = s.Substring(s.Length - 5)
(def t 
  (when (string? s)
    (let [from (-> s (count) (- 5) (max 0))]
      (subs s from))))
@import Foundation;
NSString *t=[s substringFromIndex:s.length-5];
final t = s[-5..-1]
let last5ch = s.chars().count() - 5;
let t: String = s.chars().skip(last5ch).collect();
t = s[-5..]
s last: 5
use utf8;

my $t = substr($s, -5);
val t = s.takeLast(5)
t = Right(s, 5)
<<_ :: binary-5>> <> t = s
#include <string>
std::string t = s.substr(s.length() - 5);
import "unicode/utf8"
i := len(s)
for j := 0; i > 0 && j < 5; j++ {
	_, size := utf8.DecodeLastRuneInString(s[0:i])
	i -= size
}
t := s[i:]
use unicode_segmentation::UnicodeSegmentation;
let s = "a̐éö̲\r\n";
let t = s.grapheme_indices(true).rev().nth(5).map_or(s, |(i,_)|&s[i..]);