PHP-Werkzeugklasse für chinesische Pinyin-Anfangsbuchstaben
<?<span>php </span><span>/*</span><span>* * 汉字拼音首字母工具类 * 注: 英文的字串:不变返回(包括数字) eg .abc123 => abc123 * 中文字符串:返回拼音首字符 eg. 测试字符串 => CSZFC * 中英混合串: 返回拼音首字符和英文 eg. 我i我j => WIWJ * eg. * $py = new str2PY(); * * $result = $py->getInitials('周杰伦'); * * //获取首字母 * $result = $py->getFirstString('abc'); //A * $resutl = $py->getFirstString("周杰伦"); //Z * <span>*/</span> <span>class</span><span> str2py { </span><span>private</span> <span>$_pinyins</span> = <span>array</span><span>( </span>176161 => 'A', 176197 => 'B', 178193 => 'C', 180238 => 'D', 182234 => 'E', 183162 => 'F', 184193 => 'G', 185254 => 'H', 187247 => 'J', 191166 => 'K', 192172 => 'L', 194232 => 'M', 196195 => 'N', 197182 => 'O', 197190 => 'P', 198218 => 'Q', 200187 => 'R', 200246 => 'S', 203250 => 'T', 205218 => 'W', 206244 => 'X', 209185 => 'Y', 212209 => 'Z',<span> ); </span><span>private</span> <span>$_charset</span> = <span>null</span><span>; </span><span>/*</span><span>* * 构造函数, 指定需要的编码 default: utf-8 * 支持utf-8, gb2312 * * @param unknown_type $charset </span><span>*/</span> <span>public</span> <span>function</span> __construct(<span>$charset</span> = 'utf-8'<span>) { </span><span>$this</span>->_charset = <span>$charset</span><span>; } </span><span>/*</span><span>* * 中文字符串 substr * * @param string $str * @param int $start * @param int $len * @return string </span><span>*/</span> <span>private</span> <span>function</span> _msubstr(<span>$str</span>, <span>$start</span>, <span>$len</span><span>) { </span><span>$start</span> = <span>$start</span> * 2<span>; </span><span>$len</span> = <span>$len</span> * 2<span>; </span><span>$strlen</span> = <span>strlen</span>(<span>$str</span><span>); </span><span>$result</span> = ''<span>; </span><span>for</span> (<span>$i</span> = 0; <span>$i</span> < <span>$strlen</span>; <span>$i</span>++<span>) { </span><span>if</span> (<span>$i</span> >= <span>$start</span> && <span>$i</span> < (<span>$start</span> + <span>$len</span><span>)) { </span><span>if</span> (<span>ord</span>(<span>substr</span>(<span>$str</span>, <span>$i</span>, 1)) > 129<span>) { </span><span>$result</span> .= <span>substr</span>(<span>$str</span>, <span>$i</span>, 2<span>); } </span><span>else</span><span> { </span><span>$result</span> .= <span>substr</span>(<span>$str</span>, <span>$i</span>, 1<span>); } } </span><span>if</span> (<span>ord</span>(<span>substr</span>(<span>$str</span>, <span>$i</span>, 1)) > 129<span>) { </span><span>$i</span>++<span>; } } </span><span>return</span> <span>$result</span><span>; } </span><span>/*</span><span>* * 字符串切分为数组 (汉字或者一个字符为单位) * * @param string $str * @return array </span><span>*/</span> <span>private</span> <span>function</span> _cutWord(<span>$str</span><span>) { </span><span>$words</span> = <span>array</span><span>(); </span><span>while</span> (<span>$str</span> != ""<span>) { </span><span>if</span> (<span>$this</span>->_isAscii(<span>$str</span><span>)) {</span><span>/*</span><span> 非中文 </span><span>*/</span> <span>$words</span>[] = <span>$str</span>[0<span>]; </span><span>$str</span> = <span>substr</span>(<span>$str</span>, <span>strlen</span>(<span>$str</span>[0<span>])); } </span><span>else</span><span> { </span><span>$word</span> = <span>$this</span>->_msubstr(<span>$str</span>, 0, 1<span>); </span><span>$words</span>[] = <span>$word</span><span>; </span><span>$str</span> = <span>substr</span>(<span>$str</span>, <span>strlen</span>(<span>$word</span><span>)); } } </span><span>return</span> <span>$words</span><span>; } </span><span>/*</span><span>* * 判断字符是否是ascii字符 * * @param string $char * @return bool </span><span>*/</span> <span>private</span> <span>function</span> _isAscii(<span>$char</span><span>) { </span><span>return</span> ( <span>ord</span>(<span>substr</span>(<span>$char</span>, 0, 1)) < 160<span> ); } </span><span>/*</span><span>* * 判断字符串前3个字符是否是ascii字符 * * @param string $str * @return bool </span><span>*/</span> <span>private</span> <span>function</span> _isAsciis(<span>$str</span><span>) { </span><span>$len</span> = <span>strlen</span>(<span>$str</span>) >= 3 ? 3 : 2<span>; </span><span>$chars</span> = <span>array</span><span>(); </span><span>for</span> (<span>$i</span> = 1; <span>$i</span> < <span>$len</span> - 1; <span>$i</span>++<span>) { </span><span>$chars</span>[] = <span>$this</span>->_isAscii(<span>$str</span>[<span>$i</span>]) ? 'yes' : 'no'<span>; } </span><span>$result</span> = <span>array_count_values</span>(<span>$chars</span><span>); </span><span>if</span> (<span>empty</span>(<span>$result</span>['no'<span>])) { </span><span>return</span> <span>true</span><span>; } </span><span>return</span> <span>false</span><span>; } </span><span>/*</span><span>* * 获取中文字串的拼音首字符 * * @param string $str * @return string </span><span>*/</span> <span>public</span> <span>function</span> getInitials(<span>$str</span><span>) { </span><span>if</span> (<span>empty</span>(<span>$str</span><span>)) </span><span>return</span> ''<span>; </span><span>if</span> (<span>$this</span>->_isAscii(<span>$str</span>[0]) && <span>$this</span>->_isAsciis(<span>$str</span><span>)) { </span><span>return</span> <span>$str</span><span>; } </span><span>$result</span> = <span>array</span><span>(); </span><span>if</span> (<span>$this</span>->_charset == 'utf-8'<span>) { </span><span>$str</span> = <span>iconv</span>('utf-8', 'gb2312', <span>$str</span><span>); } </span><span>$words</span> = <span>$this</span>->_cutWord(<span>$str</span><span>); </span><span>foreach</span> (<span>$words</span> <span>as</span> <span>$word</span><span>) { </span><span>if</span> (<span>$this</span>->_isAscii(<span>$word</span><span>)) {</span><span>/*</span><span> 非中文 </span><span>*/</span> <span>$result</span>[] = <span>$word</span><span>; </span><span>continue</span><span>; } </span><span>$code</span> = <span>ord</span>(<span>substr</span>(<span>$word</span>, 0, 1)) * 1000 + <span>ord</span>(<span>substr</span>(<span>$word</span>, 1, 1<span>)); </span><span>/*</span><span> 获取拼音首字母A--Z </span><span>*/</span> <span>if</span> ((<span>$i</span> = <span>$this</span>->_search(<span>$code</span>)) != -1<span>) { </span><span>$result</span>[] = <span>$this</span>->_pinyins[<span>$i</span><span>]; } } </span><span>return</span> <span>strtoupper</span>(<span>implode</span>('', <span>$result</span><span>)); } </span><span>/*</span><span>* * 20140624 wangtianbao 获取首字母 * @param string $str * @return string </span><span>*/</span> <span>public</span> <span>function</span> getFirstString(<span>$str</span><span>) { </span><span>//</span><span>先把中文转换成字母</span> <span>$new_string</span> = <span>$this</span>->getInitials(<span>$str</span><span>); </span><span>if</span> (<span>empty</span>(<span>$new_string</span><span>)) { </span><span>return</span> ''<span>; } </span><span>else</span><span> { </span><span>return</span> <span>strtoupper</span>(<span>substr</span>(<span>$new_string</span>, 0, 1<span>)); } } </span><span>private</span> <span>function</span> _getChar(<span>$ascii</span><span>) { </span><span>if</span> (<span>$ascii</span> >= 48 && <span>$ascii</span> <= 57<span>) { </span><span>return</span> <span>chr</span>(<span>$ascii</span>); <span>/*</span><span> 数字 </span><span>*/</span><span> } </span><span>elseif</span> (<span>$ascii</span> >= 65 && <span>$ascii</span> <= 90<span>) { </span><span>return</span> <span>chr</span>(<span>$ascii</span>); <span>/*</span><span> A--Z </span><span>*/</span><span> } </span><span>elseif</span> (<span>$ascii</span> >= 97 && <span>$ascii</span> <= 122<span>) { </span><span>return</span> <span>chr</span>(<span>$ascii</span> - 32); <span>/*</span><span> a--z </span><span>*/</span><span> } </span><span>else</span><span> { </span><span>return</span> '-'; <span>/*</span><span> 其他 </span><span>*/</span><span> } } </span><span>/*</span><span>* * 查找需要的汉字内码(gb2312) 对应的拼音字符( 二分法 ) * * @param int $code * @return int </span><span>*/</span> <span>private</span> <span>function</span> _search(<span>$code</span><span>) { </span><span>$data</span> = <span>array_keys</span>(<span>$this</span>-><span>_pinyins); </span><span>$lower</span> = 0<span>; </span><span>$upper</span> = <span>sizeof</span>(<span>$data</span>) - 1<span>; </span><span>$middle</span> = (int) <span>round</span>((<span>$lower</span> + <span>$upper</span>) / 2<span>); </span><span>if</span> (<span>$code</span> < <span>$data</span>[0<span>]) </span><span>return</span> -1<span>; </span><span>for</span><span> (;;) { </span><span>if</span> (<span>$lower</span> > <span>$upper</span><span>) { </span><span>return</span> <span>$data</span>[<span>$lower</span> - 1<span>]; } </span><span>$tmp</span> = (int) <span>round</span>((<span>$lower</span> + <span>$upper</span>) / 2<span>); </span><span>if</span> (!<span>isset</span>(<span>$data</span>[<span>$tmp</span><span>])) { </span><span>return</span> <span>$data</span>[<span>$middle</span><span>]; } </span><span>else</span><span> { </span><span>$middle</span> = <span>$tmp</span><span>; } </span><span>if</span> (<span>$data</span>[<span>$middle</span>] < <span>$code</span><span>) { </span><span>$lower</span> = (int) <span>$middle</span> + 1<span>; } </span><span>else</span> <span>if</span> (<span>$data</span>[<span>$middle</span>] == <span>$code</span><span>) { </span><span>return</span> <span>$data</span>[<span>$middle</span><span>]; } </span><span>else</span><span> { </span><span>$upper</span> = (int) <span>$middle</span> - 1<span>; } } } }</span>
Das Obige hat die PHP-Chinese-Pinyin-Tool-Klasse vorgestellt, einschließlich der relevanten Inhalte. Ich hoffe, dass es für Freunde hilfreich sein wird, die sich für PHP-Tutorials interessieren.

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Viele Benutzer werden sich bei der Auswahl von Smartwatches für die Marke Huawei entscheiden. Viele Benutzer sind neugierig auf den Unterschied zwischen Huawei GT3pro und GT4. Was sind die Unterschiede zwischen Huawei GT3pro und GT4? 1. Aussehen GT4: 46 mm und 41 mm, das Material ist Glasspiegel + Edelstahlgehäuse + hochauflösende Faserrückschale. GT3pro: 46,6 mm und 42,9 mm, das Material ist Saphirglas + Titangehäuse/Keramikgehäuse + Keramikrückschale 2. Gesundes GT4: Mit dem neuesten Huawei Truseen5.5+-Algorithmus werden die Ergebnisse genauer. GT3pro: EKG-Elektrokardiogramm sowie Blutgefäß und Sicherheit hinzugefügt

Konvertieren Sie grundlegende Datentypen mit der Java-Funktion String.valueOf() in Strings. Wenn wir in der Java-Entwicklung grundlegende Datentypen in Strings konvertieren müssen, ist eine gängige Methode die Verwendung der Funktion valueOf() der String-Klasse. Diese Funktion kann Parameter grundlegender Datentypen akzeptieren und die entsprechende Zeichenfolgendarstellung zurückgeben. In diesem Artikel untersuchen wir, wie die Funktion String.valueOf() für grundlegende Datentypkonvertierungen verwendet wird, und stellen einige Codebeispiele dafür bereit

Die Verwendung von return in der C-Sprache ist: 1. Für Funktionen, deren Rückgabewerttyp ungültig ist, können Sie die Rückgabeanweisung verwenden, um die Ausführung der Funktion vorzeitig zu beenden. 2. Für Funktionen, deren Rückgabewerttyp nicht ungültig ist, ist die Funktion von Die Return-Anweisung dient dazu, die Ausführung der Funktion zu beenden. 3. Beenden Sie die Ausführung der Funktion vorzeitig wenn die Funktion keinen Wert zurückgibt.

Methode zum Konvertieren eines char-Arrays in einen String: Dies kann durch Zuweisung erreicht werden. Verwenden Sie die Syntax {char a[]=" abc d\0efg ";string s=a;}, damit das char-Array dem String direkt einen Wert zuweisen und ausführen kann Der Code zum Abschließen der Konvertierung.

Warum das Snipping-Tool unter Windows 11 nicht funktioniert Das Verständnis der Grundursache des Problems kann dabei helfen, die richtige Lösung zu finden. Hier sind die häufigsten Gründe, warum das Snipping Tool möglicherweise nicht ordnungsgemäß funktioniert: Focus Assistant ist aktiviert: Dies verhindert, dass das Snipping Tool geöffnet wird. Beschädigte Anwendung: Wenn das Snipping-Tool beim Start abstürzt, ist es möglicherweise beschädigt. Veraltete Grafiktreiber: Inkompatible Treiber können das Snipping-Tool beeinträchtigen. Störungen durch andere Anwendungen: Andere laufende Anwendungen können mit dem Snipping Tool in Konflikt geraten. Das Zertifikat ist abgelaufen: Ein Fehler während des Upgrade-Vorgangs kann zu diesem Problem führen. Diese einfache Lösung ist für die meisten Benutzer geeignet und erfordert keine besonderen technischen Kenntnisse. 1. Aktualisieren Sie Windows- und Microsoft Store-Apps

Quellcode: publicclassReturnFinallyDemo{publicstaticvoidmain(String[]args){System.out.println(case1());}publicstaticintcase1(){intx;try{x=1;returnx;}finally{x=3;}}}# Ausgabe Die Ausgabe des obigen Codes kann einfach zu dem Schluss kommen: return wird ausgeführt, bevor wir uns schließlich ansehen, was auf der Bytecode-Ebene passiert. Im Folgenden wird ein Teil des Bytecodes der Methode case1 abgefangen und mit dem Quellcode verglichen, um die Bedeutung jeder Anweisung darin zu kommentieren

Ersetzen Sie Zeichen (Strings) in einem String mit der Java-Funktion String.replace(). In Java sind Strings unveränderliche Objekte, was bedeutet, dass der Wert eines String-Objekts nach der Erstellung nicht mehr geändert werden kann. Es kann jedoch vorkommen, dass Sie bestimmte Zeichen oder Zeichenfolgen in einer Zeichenfolge ersetzen müssen. Zu diesem Zeitpunkt können wir die Methode replace () in der String-Klasse von Java verwenden, um das Ersetzen von Zeichenfolgen zu implementieren. Die Methode replace() der Klasse String hat zwei Typen:

Hallo zusammen, heute werde ich die Grundkenntnisse von Java: String mit Ihnen teilen. Unnötig zu erwähnen, wie wichtig die String-Klasse ist. Man kann sagen, dass sie die am häufigsten verwendete Klasse in unserer Back-End-Entwicklung ist, daher ist es notwendig, darüber zu sprechen.
