Каков наилучший способ извлечения подстроки из строки в android?
Извлечь подстроку из строки
Ответ 1
Если вы знаете индекс начала и конца, вы можете использовать
String substr=mysourcestring.substring(startIndex,endIndex);
Если вы хотите получить подстроку от определенного индекса до конца, вы можете использовать:
String substr=mysourcestring.substring(startIndex);
Если вы хотите получить подстроку от определенного символа до конца, вы можете использовать:
String substr=mysourcestring.substring(mysourcestring.indexOf("characterValue"));
Если вы хотите получить подстроку после определенного символа, добавьте это число в .indexOf(char)
:
String substr=mysourcestring.substring(mysourcestring.indexOf("characterValue") + 1);
Ответ 2
str.substring(startIndex, endIndex);
Ответ 3
Вот пример реального мира:
String hallostring = "hallo";
String asubstring = hallostring.substring(0, 1);
В примере asubstring вернется: h
Ответ 4
Есть другой способ, если вы хотите получить подстроку до и после символа
String s ="123dance456";
String[] split = s.split("dance");
String firstSubString = split[0];
String secondSubString = split[1];
Ответ 5
использовать текст unold class от android: TextUtils.substring (charsequence source, int start, int end)
Ответ 6
Вы можете использовать subSequence, то же, что и substr в C
Str.subSequence(int Start , int End)
Ответ 7
вы можете использовать этот код
public static String getSubString(String mainString, String lastString, String startString) {
String endString = "";
int endIndex = mainString.indexOf(lastString);
int startIndex = mainString.indexOf(startString);
Log.d("message", "" + mainString.substring(startIndex, endIndex));
endString = mainString.substring(startIndex, endIndex);
return endString;
}
в этом mainString
является супер string.like
"I_AmANDROID.Devloper"
и lastString
- строка типа "." и startString как "_".
поэтому этот function
возвращает "АМАНДРОИД".
наслаждайтесь кодовым временем.:)
Ответ 8
Лучший способ получить подстроку в Android - это использовать (как сказал @user2503849) метод TextUtlis.substring(CharSequence, int, int)
. Я могу объяснить, почему. Если вы посмотрите на метод String.substring(int, int)
из android.jar
(новейший API 22), вы увидите:
public String substring(int start) {
if (start == 0) {
return this;
}
if (start >= 0 && start <= count) {
return new String(offset + start, count - start, value);
}
throw indexAndLength(start);
}
Хорошо, чем... Как вы думаете, как выглядит частный конструктор String(int, int, char[])
?
String(int offset, int charCount, char[] chars) {
this.value = chars;
this.offset = offset;
this.count = charCount;
}
Как мы видим, он ссылается на массив "old" value char[]
. Таким образом, GC не может его освободить.
В новейшей Java было исправлено:
String(int offset, int charCount, char[] chars) {
this.value = Arrays.copyOfRange(chars, offset, offset + charCount);
this.offset = offset;
this.count = charCount;
}
Arrays.copyOfRange(...)
используется внутреннее копирование массива внутри.
Что это:)
С уважением!