Как использовать первую букву строки в Java с заглавной буквы?

var style = new Style(typeof(System.Windows.Controls.Primitives
    .DataGridColumnHeader));
style.Setters.Add(new Setter(ToolTipService.ToolTipProperty
    ,"Your tool tip here"));
style.Setters.Add(new Setter { Property = BackgroundProperty, Value 
    = Brushes.Yellow });


dgExcelSheet.Columns[1].HeaderStyle = style;
262
задан Jens Piegsa 6 July 2015 в 21:43
поделиться

4 ответа

Существующие ответы любой

  • неправильные: они думают, что char отдельный символ (кодовая точка), в то время как это - слово UTF-16, которое может быть половиной из суррогатной пары, или
  • пользуются библиотеками, который не плох самой, но требует добавляющих зависимостей к Вашему проекту, или
  • Java использования 8 Потоков , который совершенно допустим, но не всегда возможен.

Позволяют нам посмотреть суррогатные символы (каждый такой символ состоят из двух слов UTF-16 — Java chars) и может иметь верхние и строчные варианты:

IntStream.rangeClosed(0x01_0000, 0x10_FFFF)
    .filter(ch -> Character.toUpperCase(ch) != Character.toLowerCase(ch))
    .forEach(ch -> System.out.print(new String(new int[] { ch }, 0, 1)));

Многие из них могут быть похожими на 'тофу' (в–Ў) для Вас, но они - главным образом допустимые символы редких сценариев, и некоторые гарнитуры поддерживают их.

, Например, давайте смотреть на Строчную букву Deseret Долго я (рђђЁ), U+10428, "\uD801\uDC28":

System.out.println("U+" + Integer.toHexString(
        "\uD801\uDC28".codePointAt(0)
)); // U+10428

System.out.println("U+" + Integer.toHexString(
        Character.toTitleCase("\uD801\uDC28".codePointAt(0))
)); // U+10400 — ok! capitalized character is another code point

System.out.println("U+" + Integer.toHexString(new String(new char[] {
        Character.toTitleCase("\uD801\uDC28".charAt(0)), "\uD801\uDC28".charAt(1)
}).codePointAt(0))); // U+10428 — oops! — cannot capitalize an unpaired surrogate

Так, кодовая точка может быть использована для своей выгоды даже в случаях, когда char не может быть. Рассмотрение этого, давайте запишем корректное (и совместимый Java 1.5!) capitalizer:

@Contract("null -> null")
public static CharSequence capitalize(CharSequence input) {
    int length;
    if (input == null || (length = input.length()) == 0) return input;

    return new StringBuilder(length)
            .appendCodePoint(Character.toTitleCase(Character.codePointAt(input, 0)))
            .append(input, Character.offsetByCodePoints(input, 0, 1), length);
}

И проверяют, работает ли это:

public static void main(String[] args) {
    // ASCII
    System.out.println(capitalize("whatever")); // w -> W

    // UTF-16, no surrogate
    System.out.println(capitalize("что-то")); // ч -> Ч

    // UTF-16 with surrogate pairs
    System.out.println(capitalize("\uD801\uDC28")); //                   
2
ответ дан 23 November 2019 в 02:33
поделиться
import java.util.*;
public class Program
{
    public static void main(String[] args) 
      {
        Scanner sc=new Scanner(System.in);
        String s1=sc.nextLine();
        String[] s2=s1.split(" ");//***split text into words***
        ArrayList<String> l = new ArrayList<String>();//***list***
        for(String w: s2)
        l.add(w.substring(0,1).toUpperCase()+w.substring(1)); 
        //***converting 1st letter to capital and adding to list***
        StringBuilder sb = new StringBuilder();//***i used StringBuilder to convert words to text*** 
        for (String s : l)
          {
             sb.append(s);
             sb.append(" ");
          }
      System.out.println(sb.toString());//***to print output***
      }
}

Я использовал функцию split, чтобы разбить строку на слова, затем снова взял список, чтобы получить заглавную букву в этих словах, а затем я использовал построитель строк, чтобы напечатать вывод в строковом формате с пробелами в нем

0
ответ дан 23 November 2019 в 02:33
поделиться

Текущие ответы являются или неправильными или сверхусложняют эту простую задачу. После проведения некоторого исследования вот два подхода , я придумываю:

1. Строка substring() Метод

public static String capitalize(String str) {
    if(str== null || str.isEmpty()) {
        return str;
    }

    return str.substring(0, 1).toUpperCase() + str.substring(1);
}

Примеры:

System.out.println(capitalize("java")); // Java
System.out.println(capitalize("beTa")); // BeTa
System.out.println(capitalize(null)); // null

2. Apache Commons Lang

Apache палата общин библиотека Lang обеспечивает StringUtils класс с этой целью:

System.out.println(StringUtils.capitalize("apache commons")); // Apache commons
System.out.println(StringUtils.capitalize("heLLO")); // HeLLO
System.out.println(StringUtils.uncapitalize(null)); // null

не забывают добавлять следующую зависимость к Вашему pom.xml файл:

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-lang3</artifactId>
    <version>3.9</version>
</dependency>
0
ответ дан 23 November 2019 в 02:33
поделиться

Простое решение! не требует никакой внешней библиотеки, она может обработать пустой или одна буквенная строка.

private String capitalizeFirstLetter(@NonNull  String str){
        return str.length() == 0 ? str
                : str.length() == 1 ? str.toUpperCase()
                : str.substring(0, 1).toUpperCase() + str.substring(1).toLowerCase();
}
0
ответ дан 23 November 2019 в 02:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: