从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(...)使用内部的本地数组拷贝。

而已 :)

最好的祝福!