我的应用程序读取包含纯文本的NFC标记的值,然后将读取的字符串向上剪切。 字符串应如下所示: “R = V; B = V; G = V; N = V; P = V; M = V; S = V” 我想读“v”字符,因为它们除以;性格,我记得有一个功能,让我分割这样的字符串,我该怎么做? v值不是常数,它可以跨越1个位置,就像它可以跨越3或4.该应用程序适用于Android手机,在Android Studio上用Java编写。
答案 0 :(得分:2)
Java在String上有一个split函数。 http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#split(java.lang.String)
所以你可以使用split(“;”);
答案 1 :(得分:2)
您询问字符串方法.split()
它将字符串拆分为数组,所以对于你的问题,因为split可以使用正则表达式,你可以精确地分割所需的模式 像这样:
String givenString="r=v;b=v;g=v;n=v;p=v;m=v;s=v";
String[]vs=givenString.split("([;]?[a-z]{1}[=])");
for(String v: vs){System.out.println(v);}//prints all v
正则表达式解释:
编辑:如果您只使用分号分隔(如@cvester建议的那样),您将获得整个条目字符串,例如:“r = v”,“b = v”等。 。 在这种情况下,您可以迭代所有条目,然后再按等于“=”进行一次拆分,如下所示:
String []entries=givenString.split(";");
for (String entry:entries){
String []vs=entry.split("=");
System.out.println(vs[1]);//prints all v
}
答案 2 :(得分:0)
使用String#split()
或者您可以创建自己的逻辑。
String string = "r=v;b=asfasv;g=v;n=asf;p=v;m=v;s=vassaf";
String word = "";
int i = 0;
ArrayList<String> list = new ArrayList();
while(i < string.length())
{
if(string.charAt(i) == '=')
{
i++;
while( i < string.length() && string.charAt(i) != ';' )
{
word += string.charAt(i);
i++;
}
list.add(word);
System.out.println(word);
word = "";
}
i ++;
}
if(!word.equals(""))
list.add(word);
System.out.println(list);
答案 3 :(得分:0)
您可以使用正则表达式来避免循环
String input = "r=v;b=v;g=v;n=v;p=v;m=v;s=v";
input.trim().replaceAll("([a-zA-Z]=)+","").replaceAll(";",""));