Extract substring from a string
AndroidStringSubstringAndroid Problem Overview
what is the best way to extract a substring from a string in android?
Android Solutions
Solution 1 - Android
If you know the Start and End index, you can use
String substr=mysourcestring.substring(startIndex,endIndex);
If you want to get substring from specific index till end you can use :
String substr=mysourcestring.substring(startIndex);
If you want to get substring from specific character till end you can use :
String substr=mysourcestring.substring(mysourcestring.indexOf("characterValue"));
If you want to get substring from after a specific character, add that number to .indexOf(char)
:
String substr=mysourcestring.substring(mysourcestring.indexOf("characterValue") + 1);
Solution 2 - Android
str.substring(startIndex, endIndex);
Solution 3 - Android
Here is a real world example:
String hallostring = "hallo";
String asubstring = hallostring.substring(0, 1);
In the example asubstring would return: h
Solution 4 - Android
There is another way , if you want to get sub string before and after a character
String s ="123dance456";
String[] split = s.split("dance");
String firstSubString = split[0];
String secondSubString = split[1];
check this post- https://stackoverflow.com/questions/8871682/how-to-find-before-and-after-sub-string-in-a-string
Solution 5 - Android
substring(int startIndex, int endIndex)
> If you don't specify endIndex, the method will return all the > characters from startIndex. > > startIndex : starting index is inclusive > > endIndex : ending index is exclusive
Example:
String str = "abcdefgh"
str.substring(0, 4)
=> abcd
str.substring(4, 6)
=> ef
str.substring(6)
=> gh
Solution 6 - Android
you can use this code
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;
}
in this mainString
is a Super string.like
"I_AmANDROID.Devloper"
and lastString
is a string like"." and startString is like"_".
so this function
returns "AmANDROID".
enjoy your code time.:)
Solution 7 - Android
use text untold class from android:
TextUtils.substring (charsequence source, int start, int end)
Solution 8 - Android
You can use subSequence , it's same as substr in C
Str.subSequence(int Start , int End)
Solution 9 - Android
When finding multiple occurrences of a substring matching a pattern
String input_string = "foo/adsfasdf/adf/bar/erqwer/";
String regex = "(foo/|bar/)"; // Matches 'foo/' and 'bar/'
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(input_string);
while(matcher.find()) {
String str_matched = input_string.substring(matcher.start(), matcher.end());
// Do something with a match found
}
Solution 10 - Android
The best way to get substring in Android is using (as @user2503849 said) TextUtlis.substring(CharSequence, int, int)
method. I can explain why. If you will take a look at the String.substring(int, int)
method from android.jar
(newest API 22), you will see:
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);
}
Ok, than... How do you think the private constructor String(int, int, char[])
looks like?
String(int offset, int charCount, char[] chars) {
this.value = chars;
this.offset = offset;
this.count = charCount;
}
As we can see it keeps reference to the "old" value char[]
array. So, the GC can not free it.
In the newest Java it was fixed:
String(int offset, int charCount, char[] chars) {
this.value = Arrays.copyOfRange(chars, offset, offset + charCount);
this.offset = offset;
this.count = charCount;
}
Arrays.copyOfRange(...)
uses native array copying inside.
That's it :)
Best regards!
Solution 11 - Android
All of The responders gave good answers. However, I am giving you all relatable methods for this so that any one can get from one place, I'll edit my answer if I find something new.
-
substring(0)- use for cut string from given specific char.
-
Substring(0,2)- give you sub string from starting(0) and ending(2) characters.
-
Split("NAME")- return you string in two parts first is that you use in split "NAME" and another part is rest of string combine.
-
subSequence(0,3) - returns sequence of give start(0) and ending index(3).
This one is not specifically use for split string but though it may be use full for some one
-
startswith("A",3)- returns string for specific starting character.
For example:
String s = "StackOverflow"; String[] split = s.split("Stack"); System.out.println("STRING NAME:"+s.substring(2)); System.out.println("STRING NAME:"+s.substring(2,3)); System.out.println("STRING NAME:"+split[1]); System.out.println("STRING NAME:"+split[0]); System.out.println("STRING NAME:"+s.subSequence(2,5));
Output:
1)ackOverflow 2)a 3)Overflow 4)stack 5)ack
I hope this will give you enough information that you require.