我们被要求检查每个行示例中字符串的以下输入
A = B + C
A = 3 + C + 99
B = ( ( 4 + B ) + D )
现在考虑这些字符串是错误的
+ - :: if two operator are next together
A B :: IF two letters are next together
1 2 :: if two numbers are next together
all numbers must be integer
Letters must only be A B or C
the parenthesis should have endings... ( ) not like ( (
现在我认为其中一个解决方案是if else并使用isdigit
,isalpha
并检查彼此相邻的字符,如果它们是相同的字符类型isdigit,isspacechar, isalpha示例,如果这是(当前正在检查[1] [3])array[1][5] = ['A','=','B','+','C']
,它看起来就好像['A','=','B'/*checking*/,'+','C'/*checking*/]
因为输入来自我正在执行此操作的文本文件
fR = new FileReader("input.txt");
bR = new BufferedReader(fR);
Inp = new Scanner(fR);
x=0;
while(Inp.hasNextLine()) {
int y=0;
while(Inp.hasNextLine()) {
stringarray[x][y];
y++;
}
x++;
}
我怎么想这样做? 或者我应该坚持使用数组字符,但我又不知道如何跳过这些空格..所以我想进行不同的讨论......我不知道如何做括号部分。
答案 0 :(得分:0)
谈论跳过空格使用带有点连接器的trim()方法来删除字符串两边的空格。
答案 1 :(得分:0)
看起来这是两个不同的问题。
1)如何阅读文件内容并在程序中创建要循环的内容
2)如何进行检查
对于(1)我建议像
这样的东西List<String> lines = new ArrayList<String>();
fR = new FileReader("input.txt");
bR = new BufferedReader(fR);
inp = new Scanner(fR);
try {
while(inp.hasNextLine()){
lines.add(imp.nextLine());
}
imp.close();
} catch (FileNotFoundException | IOException e) {
e.printStackTrace();
}
和(2)
String regex = "<regex for checking goes here>";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher("");
for (String l : lines) {
if (matcher.reset(s).matches()) {
// do something
}
}
您可以在线测试正则表达式字符串:https://regex101.com/
可能需要一段时间才能使字符串正确