从字符串中提取子字符串

时间:2011-03-24 04:10:28

标签: android string substring

从android中的字符串中提取子字符串的最佳方法是什么?

10 个答案:

答案 0 :(得分:121)

如果您知道开始和结束索引,则可以使用

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);

答案 1 :(得分:78)

substring()

str.substring(startIndex, endIndex); 

答案 2 :(得分:22)

这是一个真实世界的例子:

String hallostring = "hallo";
String asubstring = hallostring.substring(0, 1); 

在示例 asubstring 中将返回:h

答案 3 :(得分:11)

如果你想在字符

之前和之后获得子字符串,还有另一种方法
String s ="123dance456";
String[] split = s.split("dance");
String firstSubString = split[0];
String secondSubString = split[1];

检查此帖子 - how to find before and after sub-string in a string

答案 4 :(得分:5)

ambassador_transaction.order

  

如果您未指定 endIndex ,则该方法将返回所有    startIndex 中的字符。

     

startIndex:起始索引包含在内

     

endIndex:结尾索引是唯一的

示例:

substring(int startIndex, int endIndex)

String str = "abcdefgh" => abcd

str.substring(0, 4) => ef

str.substring(4, 6) => gh

答案 5 :(得分:3)

使用来自android的文本untold类:
TextUtils.substring (charsequence source, int start, int end)

答案 6 :(得分:3)

您可以使用subSequence,它与C

中的substr相同
 Str.subSequence(int Start , int End)

答案 7 :(得分:0)

在Android中获取子字符串的最佳方法是使用(如@ user2503849所述)<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div id="panda"> <div id="koala"> koala </div> <div id="bear"> bear </div> </div>方法。我可以解释一下原因。如果您要查看TextUtlis.substring(CharSequence, int, int)(最新API 22)中的String.substring(int, int)方法,您会看到:

android.jar

好吧,比......你觉得私人构造函数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; } 数组。因此,GC无法释放它。

在最新的Java中它已修复:

char[]

String(int offset, int charCount, char[] chars) { this.value = Arrays.copyOfRange(chars, offset, offset + charCount); this.offset = offset; this.count = charCount; } 在内部使用本机数组复制。

就是这样:))

祝你好运!

答案 8 :(得分:0)

当多次出现与模式匹配的子串

    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
    }

答案 9 :(得分:0)

所有响应者都给出了很好的答案。但是,我为您提供了所有相关的方法,以便任何人都可以从一个地方获得,如果我发现新的东西,我会编辑我的答案。

1)substring(0)- 用于从给定的特定字符中剪切字符串。

2)Substring(0,2)- 给你从开始(0)和结束(2)字符的子字符串。

3)Split("NAME")-首先将字符串分为两部分返回,这是您在拆分“NAME”中使用的,另一部分是字符串的其余部分组合。

4)subSequence(0,3) - 返回给定开始(0)和结束索引(3)的序列。

*这个不是专门用于分割字符串,但它可以用于某些字符串

5)startswith("A",3)- 返回特定起始字符的字符串。

例如,

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));

输出: 1)ackOverflow

2)a

3)溢出

4)堆栈

5)确认

我希望这能给您提供所需的足够信息。