#java
Вопрос:
Напишите программу на Java со следующим сценарием.
Функция, которая увеличивает строку для создания новой строки.
Если строка заканчивается числом, то это число должно быть увеличено на 1. Если строка не заканчивается числом, к новой строке следует добавить 1. Если число имеет начальные нули, следует учитывать количество цифр.
Комментарии:
1. Можете ли вы добавить несколько тестовых примеров или примеров?
2. пожалуйста, добавьте свой подход
Ответ №1:
Вы хотите достичь чего-то подобного
1.Если последний символ-это число, увеличьте его. (Учтена возможность » 9 » в качестве последнего символа, поэтому увеличьте его до 10.)
2.Если последний символ не является числом, увеличьте его.
String string = "StackOverflowError7";
if(Character.isDigit(string.charAt(string.length()-1)))
if(string.charAt(string.length()-1) != '9'){
string = string.substring(0,string.length()-1) (char)(string.charAt(string.length()-1) 1);
} else {
string = string.substring(0,string.length()-1) "10";
}
else {
string = string.substring(0,string.length()-1) (char)(string.charAt(string.length()-1) 1);
}
System.out.println(string);//Final output
Ответ №2:
Это для поиска отдельного значения или определенного значения, которое вы хотите найти в последовательности:
static void methodOne() {
// initialize array
String[] array = { "one", "2", "three", "four" };
// initialize value to search
String valueToSearch = "2";
// initialize boolean variable
boolean isExists = false;
// iterate over array
for (int i = 0; i < array.length; i ) {
// get the value at current array index
String arrayValue = array[i];
// compare values
if (valueToSearch.equals(arrayValue)) {
isExists = true;
// if value is found, terminate the loop
break;
}
}
if (isExists) {
//add code
} else {
//add code
}
}
Если вы хотите строго искать, то, если это номер, я рекомендую это:
private Pattern pattern = Pattern.compile("-?\d (\.\d )?");
public boolean isNumeric(String strNum) {
if (strNum == null) {
return false;
}
return pattern.matcher(strNum).matches();
}
Ответ №3:
Попробуй это.
static final Pattern N = Pattern.compile("(.*?)(\d )");
static String increment(String s) {
String r = N.matcher(s).replaceFirst(m ->
String.format("%s%0" m.group(2).length() "d",
m.group(1), Integer.parseInt(m.group(2)) 1));
return r.equals(s) ? s "1" : r;
}
static void testIncrement(String s) {
System.out.println(s " -> " increment(s));
}
и
testIncrement("abc0000");
testIncrement("abc0011");
testIncrement("abc0099");
testIncrement("abc9999");
testIncrement("abc012def8");
testIncrement("abc012def");
выход:
abc0000 -> abc0001
abc0011 -> abc0012
abc0099 -> abc0100
abc9999 -> abc10000
abc012def8 -> abc012def9
abc012def -> abc012def1