2011-07-26 71 views
5

Làm cách nào để viết hoa chỉ chữ cái cuối của chuỗi.Viết hoa chữ cái cuối cùng của một chuỗi

Ví dụ:

hello 

trở thành:

hellO 
+0

Trong một chuỗi? Bạn có nghĩa là một đoạn/câu/từ? Nếu không, bạn chỉ đang thực hiện 'strtoupper()' ở vị trí cuối cùng trong một biến chuỗi mà bạn kiểm soát. –

+4

'echo strrev (ucfirst (strrev (" hello ")));'; p – karim79

+0

@ karim79, đó là tốt hơn nhiều so với ý tưởng của tôi, bạn nên đăng nó như là một câu trả lời. – Brad

Trả lời

1

Có hai phần này. Trước tiên, bạn cần biết cách lấy các phần của chuỗi. Để làm được điều đó, bạn cần có hàm substr().

Tiếp theo, có một hàm để viết hoa một chuỗi có tên là strtotupper().

$thestring="Testing testing 3 2 1. aaaa"; 
echo substr($thestring, 0, strlen($thestring)-2) . strtoupper(substr($thestring, -1)); 
12

phức tạp nhưng thú vị:

echo strrev(ucfirst(strrev("hello"))); 

Demo: http://ideone.com/7QK5B

như một chức năng:

function uclast($str) { 
    return strrev(ucfirst(strrev($str))); 
} 
+0

Điều đó hoạt động tuyệt vời! khi tôi nhập nó giống như vậy, nhưng đối với những gì tôi đang cố gắng là trong wordpress thay đổi tiêu đề trang thành chữ thường và chữ in hoa cuối cùng. ví dụ: ngay bây giờ tiêu đề xuất hiện dưới dạng Trang mẫu. Tôi muốn nó hiển thị như là mẫu trang. heres những gì tôi đã cố gắng, nhưng nó không hoạt động 'code' Kathy

+0

xin lỗi không chắc chắn làm thế nào để làm khối mã trên đây :) – Kathy

+1

@Kathy: '$ str = strtolower (the_title());' đầu tiên sau đó. Nếu nó không hoạt động, có thể sẽ có lỗi trong hàm 'the_title()' của bạn. –

0

Dưới đây là một thuật toán:

1. Split the string s = xyz where x is the part of 
    the string before the last letter, y is the last 
    letter, and z is the part of the string that comes 
    after the last letter. 
    2. Compute y = Y, where Y is the upper-case equivalent 
    of y. 
    3. Emit S = xYz 
2

Khi $s là chuỗi của bạn (Demo):

$s[$l=strlen($s)-1] = strtoupper($s[$l]); 

Hoặc ở dạng của một hàm:

function uclast($s) 
{ 
    $l=strlen($s)-1; 
    $s[$l] = strtoupper($s[$l]); 
    return $s; 
} 

Và đối với nhu cầu mở rộng của bạn để có tất cả mọi thứ thấp hơn trường hợp ngoại trừ các ký tự cuối cùng một cách rõ ràng trên -case:

function uclast($s) 
{ 
    $l=strlen($s)-1; 
    $s = strtolower($s); 
    $s[$l] = strtoupper($s[$l]); 
    return $s; 
} 
0

Chữ thường/chữ hoa/ký tự hỗn hợp cho mọi thứ sau có thể được sử dụng

<?php 
    $word = "HELLO"; 

    //or 

    $word = "hello"; 

    //or 

    $word = "HeLLo"; 

    $word = strrev(ucfirst(strrev(strtolower($word)))); 

    echo $word; 
?> 

Output cho tất cả các từ

hellO 
Các vấn đề liên quan