如何根据android中的特殊字符获取子字符串?

时间:2013-06-17 11:04:36

标签: java android substring

实际上这是一个非常简单的问题,我尝试了很多,但我无法得到确切的解决方案。我有一个字符串:

String mystring = "one<1234567>,two<98765432>,three<878897656>";

在这里,我想要"<"">"内的数据。任何人都可以帮我这个吗?

6 个答案:

答案 0 :(得分:2)

我会使用正则表达式

String str = "one<1234567>,two<98765432>,three<878897656>";
Matcher m = Pattern.compile("<(.+?)>").matcher(str);
while(m.find()) {
    String v = m.group(1);
}

答案 1 :(得分:1)

尝试

String mystring = "one<1234567>,two<98765432>,three<878897656>";
    String[] result = mystring.split(",");
    for (String s : result) {
        s = s.substring(s.indexOf("<")+1);
        s = s.substring(0, s.indexOf(">"));
        System.out.println(s);
    }

打印结果:

1234567
98765432
878897656

答案 2 :(得分:0)

您可以使用<(.*?)>这样的正则表达式:

String mystring = "one<1234567>,two<98765432>,three<878897656>";
Pattern pattern = Pattern.compile("<(.*?)>");
Matcher matcher = pattern.matcher(mystring);
while (matcher.find())
{
    System.out.println(matcher.group(1));
}

答案 3 :(得分:0)

试试这个

String mystring = "one<1234567>,two<98765432>,three<878897656>";
String[] a = myString.split(",");
for(int i = 0; i < a.length; i++){
String substr=a[i].subString(a[i].indexOf("<"),a[i].indexOf(">"));
System.out.println(substr);
}

答案 4 :(得分:0)

如果您的内括号值始终为数字且在字母外,即&lt;,&gt;

,请尝试
String[] strings=mystring.replaceAll("[a-z<>]", "").split(",");

         for(String string:stringsArray)
         { 
          System.out.println(string);
         }

答案 5 :(得分:0)

我从StringTokenizer

找到了一个新的解决方案

你可以用它作为,

 StringTokenizer tokens = new StringTokenizer(KEY_SUBFOLDERNAME, ".");
            String first_string = tokens.nextToken();
            File_Ext = tokens.nextToken();
            System.out.println("First_string : "+first_string);
            System.out.println("File_Ext : "+File_Ext);