Przeglądałem cały StackOverflow w wielu pytaniach na temat pisania słów w języku Java, a żadna z nich nie wydaje się być najmniej zainteresowana internacjonalizacją i tak na prawdę żadna nie wydaje się do pracy w kontekście międzynarodowym. Oto moje pytanie.Poprawne pisanie tytułu w języku Java w wersji Unicode
Mam ciąg w Javie, który reprezentuje słowo - wszystkie znaki isLetter(), bez spacji. Chcę, aby pierwszy znak wielkimi literami, a reszta - małymi literami. Mam przydomek mojego słowa.
Łatwo wywołać .substring (1) .toLowerCase (Locale) dla ostatniej części mojego łańcucha. Nie mam pojęcia, jak uzyskać prawidłowy pierwszy znak.
Pierwszy problem, jaki mam, dotyczy języka niderlandzkiego, gdzie "ij" oznacza dwuznak i powinno być pisane razem. Mogłem to zrobić osobiście, ponieważ wiem o tym; teraz mogą istnieć inne języki z tego rodzaju rzeczami, o których nie wiem, i jestem pewien, że Unicode powie mi, jeśli dobrze zapytam. Ale nie wiem, jak zapytać.
Nawet jeśli powyższy problem został rozwiązany, nadal utknąłem bez odpowiedniego sposobu obsługi języka angielskiego, tureckiego i greckiego, ponieważ Character obsługuje titlecase, ale nie ma locale, a String obsługuje locale, ale nie titlecase.
Jeśli wziąłem punkt kodowy i przekazałem go do Character.toTitleCase(), to się nie powiedzie, ponieważ nie ma sposobu na przekazanie ustawień narodowych tej metody. Jeśli więc system jest ustawiony w języku angielskim, ale słowo to jest tureckie, a pierwszy znak tego słowa to "i", zamiast "İ" otrzymam "ja", a to jest złe. Teraz, jeśli wezmę podłańcuch i użyję .toUpperCase (locale), to się nie powiedzie, ponieważ jest w górnej, a nie w tytule. Więc jeśli słowo jest po grecku, nadal otrzymam niewłaściwą postać.
Jeśli ktoś ma przydatne wskazówki, chętnie bym je usłyszał.
'ToTitleCase()' nie potrzebuje ustawień narodowych, ponieważ jest niezależne od ustawień narodowych. --- Jeśli chcesz, aby dwa znaki 'ij' były dwuznakowe, powinieneś przekonwertować je na znak Unicode digraph' ij' (['LATIN SMALL LIGATURE IJ' (U + 0133)] (http: // www. fileformat.info/info/unicode/char/0133/index.htm)). – Andreas