Java Строка поиска без цикла или оператора if? - PullRequest
1 голос
/ 12 октября 2011

Если у меня есть

String myName = "First Last";

Как я могу, без оператора if или каких-либо других условий / циклов, вернуть только инициалы имени ??

Я искалнавсегда на этом!

Спасибо

Ответы [ 4 ]

7 голосов
/ 12 октября 2011

Поскольку вы не можете зацикливать или использовать условные выражения, вы ничего не можете проверить, поэтому это ваш единственный выбор:

/**
 * Gets the initials from a String. Note: Only works on the String "First Last"
 */
String getInitials(String s) {
    return "FL";
}
5 голосов
/ 12 октября 2011

Без некоторой формы ветвления / зацикливания / условных выражений где-то это невозможно (обрабатывать в общем виде), но кто говорит, что нам нужно сделатьветвление?( Регулярные выражения - это мощные звери, иногда слишком сильные, и всегда звери ...)

String name = "First Last";
String initials = name.replaceAll("[^A-Z]", "");

Обратите внимание, что ваш пробег будет разным: рассмотрим Стив МакКуин (или Президент Российской Федерации ) в качестве контрпримеров.Модификация приведенного выше регулярного выражения является жизнеспособным решением (то есть «оставлено как упражнение» ;-), но обратите внимание на предупреждение о регулярных выражениях.

Счастливое кодирование.

2 голосов
/ 12 октября 2011
  1. Используйте метод charAt(int) для получения символа.
  2. Найти местоположение фамилии, используя indexOf(String) метод

Пример кода приведен ниже.

String initial_name = myName.charAt(0)+"."+myName.charAt(myName.indexOf(' ')+1)+".";
0 голосов
/ 12 октября 2011

ОК, как на счет этого:

String myName = "First Last";
String[] names = myName.split("\s+");
return names[0] + names[1];

Обратите внимание, что это работает только для двух имен, разделенных пробелами. Поиск другого числа инициалов, вероятно, требует регулярного выражения или некоторых условий: D

...