在java文本文件中查找目标模式
我有一个只有+和空格的文本文件。我必须在这个文件中找到一个看起来像宇宙飞船的目标。但是宇宙飞船并不一定要完美 提前谢谢 这是带有目标的文本文件,是一个较小的版本。此中至少有一个目标在java文本文件中查找目标模式,java,regex,pattern-matching,text-files,Java,Regex,Pattern Matching,Text Files,我有一个只有+和空格的文本文件。我必须在这个文件中找到一个看起来像宇宙飞船的目标。但是宇宙飞船并不一定要完美 提前谢谢 这是带有目标的文本文件,是一个较小的版本。此中至少有一个目标 + ++ + + + + + + + +++ + + ++ + + ++ + + ++ ++ + + + + + + ++ + + ++++ ++ +
+ ++ + + + + + + + +++ +
+ ++ + + ++ + + ++ ++ + +
+ + + + ++ + + ++++ ++
+ + ++++ + ++ + ++ +
+ + + + ++ + ++ + +
+ + + + ++ + + + +
+ + ++ + + +++ ++ +++
+ + + + ++ + ++ ++ + ++
+ + + + + ++ + + + + ++ + +
+ ++ + + ++ ++ +++ +
+ ++ + ++ + + + + ++ ++ +
+ + ++ ++ + + + + +
+ + + + + ++ + +
这就是目标
+
+
+++
+++++++
++ ++
++ + ++
++ +++ ++
++ + ++
++ ++
+++++++
+++
我尝试过正则表达式模式读取,但文件太大,所以我决定反对。我不知道还有什么办法可以解决这个问题。我认为你不可能也不需要在这里做任何真正有趣的事情 您可以从编码模式开始。在这种情况下,您可以:
string[]
List
char[][]
char[][] matrix = ...;
char ch = matrix[row][column];
所以你有:
char[][] search = new char[searchRows][searchColumns];
char[][] target = new char[targetRows][targetColumns];
您可以是:
int maxMatch = 0;
int maxMatchRow = -1;
int maxMatchColumn = -1;
for (int row = 0; row <= searchRows - targetRows; row++) {
for (int column = 0; columns <= searchColumns - targetColumns; column++) {
int match = calculateMatch(search, target, row, column);
if (match > maxMatch) {
maxMatchRow = row;
maxMatchColumn = column;
}
}
}
int-maxMatch=0;
int maxMatchRow=-1;
int maxMatchColumn=-1;
对于(int row=0;row那么你想要一艘宇宙飞船,嗯!你说的“宇宙飞船不一定是完美的”是什么意思?如果问得好的话,我真的很喜欢这个问题。这对我来说是一个很好的谜题!可能是50%或70%或更高的百分比。那么你想要模糊模式匹配吗?这不仅仅是我在文件中寻找的一个目标。有about 10个目标。我包含的位仅包含1个目标,以给出问题的示例。然后搜索10个目标,找到得分百分比最高的目标。只需编写更多代码。为每个方法指定自己的名称,以便您可以轻松地从另一个方法调用它,该方法将每个目标的得分组合在一起。