Поэтому я много думал о логике оператора if if в строке 6 моего кода. Но я надеялся получить некоторые отзывы от более опытных разработчиков. Вы, ребята, думаете, что я просто перепутал свой код, и если да, то как бы вы написали это более кратким?рекомендации по созданию кода для строковых манипуляций
ответ
Over-усложнению? Да, вы на самом деле :-)
Я бы просто использовать гораздо проще:
public String seeColor (String color) {
if (color.startsWith("red")) return "red";
if (color.startsWith("blue")) return "blue";
return "";
}
Следующая полная программа показывает в действии:
public class Test
{
public static String seeColor (String color) {
if (color.startsWith("red")) return "red";
if (color.startsWith("blue")) return "blue";
return "";
}
public static void main(String[] args) {
String[] testData = { "redxx", "xxred", "blueTimes", "NoColor",
"red", "re", "blu", "blue", "a", "", "xyzred" };
for (String s: testData)
System.out.println("[" + s + "] -> [" + seeColor(s) + "]");
}
}
Выходом этой программы бытии , как и ожидалось:
[redxx] -> [red]
[xxred] -> []
[blueTimes] -> [blue]
[NoColor] -> []
[red] -> [red]
[re] -> []
[blu] -> []
[blue] -> [blue]
[a] -> []
[] -> []
[xyzred] -> []
Если вы хотите легко расширяемой в будущем, вы можете выбрать что-то вроде:
public static String seeColor (String color) {
String[] allow = {"red", "blue"};
for (String s: allow)
if (color.startsWith(s))
return s;
return "";
}
Затем, добавляя цвет к allow
массив является единственным шагом вам нужно принять, чтобы он признал.
Отличное объяснение .. Я видел, что startWith() естественно возвращает логическое значение, я не понимал, что вы все равно можете вернуть строку из этого, но имеет смысл, что вы можете, основываясь на результате, являющемся истинным или ложным. Также я думаю, что последний фрагмент кода с каждым циклом является гениальным для практичности в будущем использовании. Спасибо чувак! – user3646508
Лично я думаю, что вы могли бы упростить ее с чем-то вроде
if (str != null) {
if (str.equals("red")) return "red";
else if (str.equals("blue")) return "blue";
}
return "";
или чуть более сложным switch
if (str != null) {
switch (str) {
case "red":
return "red";
case "blue";
return "blue";
}
}
return "";
Тестирование length
, а затем выполняя substring()
, как представляется, выполнять много относительно дорогого String
манипуляции для меня.
Редактировать
Если вам необходимо проверить только начиная символов, я бы предпочел
if (str != null) {
if (str.startsWith("red")) return "red";
else if (str.startsWith("blue")) return "blue";
}
return "";
Это не учитывает входные данные, такие как «bluexx». – RogueBaneling
@ RogueBaneling Второй блок if if исключает это как возможность. Сначала я проверил.'length' должно быть' 3', и оно должно равняться '' red ''или' length' равно '4', и оно должно быть равно' 'blue''. :) –
Мне кажется, что вы бы лучше герметизирующего свои названия цветов в потоке, так что он может быть легко расширена, вместо того, чтобы добавить новые, если ветви:
return Stream.of("red", "blue", "green")
.filter(colourName::startsWith).findAny().orElse("");
Обратите внимание, что это решение основано на Java 8 потоках и ссылках на методы.
Ooh, Java 8 имеет несколько отличных новых функций. – paxdiablo
Любите решение, но я не совсем понимаю синтаксис. Метод имеет тип возврата String, поэтому я предполагаю, что это работает, потому что вы сделали его Array of, String [] приемлемым цветом. Тем не менее, я хочу лучше понять ваш .fliter() и с какой целью double :: предоставлять. Я просматриваю документы java 8 по этим последним 3 методам обработки после .stream(), но не могу их найти. – user3646508
.filter и .findAny - это методы Steam. .orElse - метод Необязательный. Для синтаксиса :: для выражения lamba. – sprinter
правильный выражение решение. ^
означает начало матча.
public static String GetColor(String input) {
String[] colors = {"red", "blue"};
for(String color : colors) {
if(input.matches(String.format("^%s.*", color)))
return color;
}
return "";
}
- 1. Рекомендации по созданию репозитория кода
- 2. Рекомендации и рекомендации по созданию прокси-сайта
- 3. Рекомендации по созданию общей библиотеки кода для проектов SharePoint
- 4. Рекомендации по созданию кода авторизации для операций с кредитной картой
- 5. Рекомендации по созданию приложения ASP.NET
- 6. Рекомендации по созданию токенов OAuth?
- 7. Рекомендации по созданию распределенной CMS?
- 8. Рекомендации по созданию базы данных
- 9. Рекомендации по созданию геоданных Python
- 10. Рекомендации по созданию потока входа?
- 11. Рекомендации по созданию конвертера объектов
- 12. Рекомендации по созданию поискового приложения?
- 13. Рекомендации по созданию распределенного приложения?
- 14. Рекомендации по созданию файла CSV?
- 15. Рекомендации по созданию модального окна
- 16. Рекомендации по созданию интерактивной визуализации?
- 17. Рекомендации по созданию Flash-видеопроигрывателя
- 18. Рекомендации по созданию программных устройств?
- 19. Рекомендации по созданию пакетов NuGet
- 20. Рекомендации по созданию очереди NSURLSessionTasks
- 21. Рекомендации по созданию угловых служб
- 22. Рекомендации по созданию приложений для резервного копирования?
- 23. Рекомендации по созданию журнала Writer для ошибок
- 24. Рекомендации по кодированию строковых правил
- 25. Рекомендации по созданию или улучшению проектов LightSwitch
- 26. Рекомендации по созданию нескольких значков в Android
- 27. Рекомендации по созданию класса 2D/коллекции
- 28. Рекомендации по созданию системы единого входа
- 29. Рекомендации по созданию изображений Ember Image Views?
- 30. Любые рекомендации по созданию веб-сайта кампании?
проверить это http://www.tutorialspoint.com/java/java_string_startswith.htm –
Просто совет: пожалуйста, напишите код, а не только его образ. Наличие фактического текста облегчает вам помощь (менее значительная часть здесь, так как она небольшая, но только изображение является головной болью для больших фрагментов кода), а также делает текст доступным для поиска. –