我有一个字符串,它是一个布尔方程:data1 + data2.data3 ..我想将我的字符串文本放入arrayList eq.getEquation()
因此,最后我想拥有[data1,+,data2,.,data3]
。
这就是我的代码的目的。但是问题是当我将字符串添加到arrayList
*(使用add方法:eq.getEquation().add())
时。我不知道为什么,但是当我这样做时:eq.getEquation().add(str.toString());
我的字符串与前一个字符串连接在一起元素,但未添加...
public void DmdViewToPasteTextFromClipboard(String text){
if(text!=null){
int item=0;
String[] ArrOfStr = text.split("");
StringBuilder str = new StringBuilder();
for(int i=0; i<ArrOfStr.length; i++){
if(!ArrOfStr[i].equals("+") && !ArrOfStr[i].equals(".") && !ArrOfStr[i].equals("¤") &&
!ArrOfStr[i].equals("!")&&!ArrOfStr[i].equals("(")|| !ArrOfStr[i].equals(")")){
str.append(ArrOfStr[i]);
}else{
//System.out.print("str : "+ str +"\n");
// eq.getEquation().add(str.toString());
eq.getEquation().add(str.toString());
eq.getEquation().add(ArrOfStr[i]);
str.replace(0, str.length(), "");
}
}
eq.getEquation().add(str.toString());
// eq.getEquation().add(str);
//System.out.print("last str : "+ str +"\n");
System.out.println("Eq of Past mathod ----> "+ eq.getEquation());
}
f.DisplayEq(eq.getEquation());
}
结果:过去方法的等式----> [紫+黄]
thnk
答案 0 :(得分:1)
您的复杂情况有误,最后一个||
应该也应该是&&
。
if(!ArrOfStr[i].equals("+") && !ArrOfStr[i].equals(".") && !ArrOfStr[i].equals("¤") &&
!ArrOfStr[i].equals("!") && !ArrOfStr[i].equals("(") && !ArrOfStr[i].equals(")")) {
或者您可以定义operators
的列表,然后仅检查当前字符是否在该列表中:
List<String> operators = Arrays.asList("+", ".", "¤", "!", "(", ")");
if(! operators.contains(ArrOfStr[i])) {
或者仅按单词边界\b
进行分隔,可能还带有一些空白\s*
List<String> tokens = Arrays.asList(text.split("\\s*\\b\\s*"));
两种方法都以[violet, +, yellow]
结尾。
答案 1 :(得分:0)
在else块中,
str.replace(0, str.length(), "");
不会“重置” str(而是返回值)。我相信你应该使用
str.setLength(0);
代替