Java 寻找相似字符串

Java 寻找相似字符串,java,c#,string,split,similarity,Java,C#,String,Split,Similarity,我知道如何找到类似的字符串,但这种情况很棘手 假设我有以下字符串: Xyz , rmz 2014-R1 Xyz 2014 - R1 Xyz , rmz 2014-r2 它们看起来都很相似,对吗?但我只希望我的程序返回具有类似数字的字符串 以下是我希望代码返回的内容: Xyz , rmz 2014-R1 Xyz 2014 - R1 因为第三个字符串是2014-R2,它被认为是一年中不同的季度,所以我不希望我的代码返回它 我可以考虑的一种方法是拆分并收集所有数字。是否相似,数字是否匹配 这是为了

我知道如何找到类似的字符串,但这种情况很棘手

假设我有以下字符串:

Xyz , rmz 2014-R1
Xyz 2014 - R1
Xyz , rmz 2014-r2
它们看起来都很相似,对吗?但我只希望我的程序返回具有类似数字的字符串

以下是我希望代码返回的内容:

Xyz , rmz 2014-R1
Xyz 2014 - R1
因为第三个字符串是2014-R2,它被认为是一年中不同的季度,所以我不希望我的代码返回它

我可以考虑的一种方法是拆分并收集所有数字。是否相似,数字是否匹配


这是为了消除重复,有什么提示吗?我可能不得不手动操作,但我会想出创造性的方法来解决这种情况

您可以使用regex搜索模式dddd-rd:

public static void main( String args[] ){
      String line = "Xyz , rmz 2014-r2";
      String pattern = "\\d\\d\\d\\d-.\\d";

      // Create a Pattern object
      Pattern r = Pattern.compile(pattern);

      // Now create matcher object.
      Matcher m = r.matcher(line);
      if (m.find( )) {
         System.out.println("Found value: " + m.group(0) );
      } else {
         System.out.println("NO MATCH");
      }
}
您可以检查此模式的每一行,然后检查它是否是您想要的年度/季度

如果要搜索特定的年度和季度,可以执行以下操作:

String pattern = "2014-r2";

正则表达式在非字母数字字符上拆分以进行分段比较您可以使用正则表达式…它们有标识符吗?就像是从一个特定的索引开始,还是仅仅在一个逗号“,”之后?str.contains2014&&str.containsR1。。。类似于此尝试使用此正则表达式模式Xyz*+2014*.R1您可以使用sublime使用查找工具并选择regexp search Ctrl+F来测试此模式