2015-02-20 4 views
1

Давайте предположим, что мы имеем следующую строку:считывают только прописные буквы слова внутри строки

String string = "Hello my name Is John doe"; 

Я хотел бы получить только заглавные строки из этой строки, в данном случае: Hello, Is, John.

Как я могу достичь этого в Java?

+0

Я ненавижу вниз избирателей ... кто-нибудь может иметь какой-либо сомнения ... лучше попытайтесь решить проблему и помогите человеку. – Abhi

+0

Сначала разделите строку на пробел, которая сохранит ее в массиве. Затем проведите через массив и получите первый символ строки. Используйте IsUpper, чтобы определить, является ли символ верхним. –

+0

Вот код для моего предыдущего комментария: String string = "Привет, мое имя John doe"; Строка [] names = strings.Split (''); Строка upperletter = ""; для (int a = 0; a

ответ

0

Разделите строку символами пробега, затем перейдите по каждой разделенной части и проверьте, является ли ее первая буква столицей.

public static void main(String[] args) { 
    String text = "My hovercraft is Full of Eels"; 
    Collection<String> startingWithCapital = new ArrayList<>(); 
    for (String part : text.split(" ")) { 
     if (Character.isUpperCase(part.charAt(0))) { 
      startingWithCapital.add(part); 
     } 
    } 
    // Just to make sure it works 
    for (String part : startingWithCapital) { 
     System.out.println(part); 
    } 
} 

Это выходы:

My 
Full 
Eels 
6

Вы можете split строку и проверить каждую часть на заглавной первую букву:

String string = "Hello my name Is John doe"; 
List<String> result = new LinkedList<>(); 

for (String s : string.split(" ")) { 
    if (Character.isUpperCase(s.charAt(0))) { 
     result.add(s); 
    } 
} 
+0

Upvoted .. гораздо эффективнее моего решения: P – TheLostMind

+1

Спасибо за эту опечатку правильно @Hallucynogenyc – Mureinik

3

Использование регулярных выражений с границей слова.

public static void main(String... strings) { 
    String string = "Hello my name Is John doe"; 
    String[] arr = string.replaceAll("\\b[a-z]\\w+\\b", "").split("\\s+"); 
    for (String s : arr) { 
     System.out.println(s); 
    } 
} 

O/P:

Hello 
Is 
John 
+0

это лучшее решение :) – SabaRish

+0

@SabaRish - Nope. * Решение Mureinik * - лучший банкомат. :) – TheLostMind

+0

ваш более чистый код. – SabaRish

0

Используйте регулярное выражение и цикл через все матчи:

String line = "Hello my name Is John doe"; 
Pattern p = Pattern.compile("([A-Z]\\w+)"); 
Matcher m = p.matcher(line); 
while (m.find()) { 
    System.out.println(m.group()); 
} 
Смежные вопросы