从string中提取子string
什么是从android中的string中提取一个子string的最佳方式?
如果您知道开始和结束索引,则可以使用
String substr=mysourcestring.substring(startIndex,endIndex);
如果你想从特定的索引获取子串直到结束,你可以使用:
String substr=mysourcestring.substring(startIndex);
如果你想从特定的字符得到子string,直到结束,你可以使用:
String substr=mysourcestring.substring(mysourcestring.indexOf("characterValue"));
如果您想从特定字符后面获取子string,请将该数字添加到.indexOf(char)
:
String substr=mysourcestring.substring(mysourcestring.indexOf("characterValue") + 1);
substring()
:
str.substring(startIndex, endIndex);
这是一个真实世界的例子:
String hallostring = "hallo"; String asubstring = hallostring.substring(0, 1);
在示例中, asubstring将返回:h
还有一种方法,如果你想获得一个字符前后的子string
String s ="123dance456"; String[] split = s.split("dance"); String firstSubString = split[0]; String secondSubString = split[1];
检查这个post – 如何查找string中的子string之前和之后
从android中使用文本untold类:
TextUtils.substring (charsequence source, int start, int end)
你可以使用subSequence,它和C中的substr相同
Str.subSequence(int Start , int End)
你可以使用这个代码
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
是一个string像“。” 和startString就像“_”。 所以这个function
返回“AmANDROID”。 享受你的代码时间:)
在Android中获取子string的最好方法是使用(如@ user2503849所示) TextUtlis.substring(CharSequence, int, int)
方法。 我可以解释为什么。 如果您将看看android.jar
(最新的API 22)的String.substring(int, int)
方法,您将看到:
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; }
正如我们可以看到它保持对“旧”值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(...)
使用内部的本地数组拷贝。
而已 :)
最好的祝福!