【问题标题】:How to search specific word in string如何在字符串中搜索特定单词
【发布时间】:2014-11-12 23:05:31
【问题描述】:

请看下面的代码,基本上我正在检查文件名中的一些特定单词来确定文件的类型。请看下面 代码并让我知道这是否是最好的方法,否则请提出建议。

Example File Name : incoming_EMP_data.dat
final String[] files = file.list();
if (files != null && files.length > 0) {                
fileName = files[0];
if(files[0].replace("_"," ").indexOf("EMP")!=-1)
System.out.println("EMP file");
else
System.out.println("NOT EMP file");
}

如果文件名有传入_TEMP_data.dat 上面的代码也会通过,我正在寻找确切的单词,

问候,

mkr

【问题讨论】:

标签: java


【解决方案1】:

文件名有模式吗?我的意思是,总是会像“”一样出现?

如果是,您可以将代码更改为:

    if(files[0].indexOf("_EMP_") != -1)

问候。

【讨论】:

    【解决方案2】:

    例如可以使用正则表达式和单词boundary matcher\b

    String[] examples = {
            "incoming_EMP_data.dat",
            "EMP.pemp", // word boundary can be beginning or end
            "Hurz-EMP#poof", // many 
            "~EMP=", // many strange characters are boundaries
            "XYZ_TEMP.dat",
            "1EMP2", // numbers are considered word
            "ßEMPö" // unicode characters are also considered word
    };
    
    Pattern pattern = Pattern.compile("\\bEMP\\b");
    // word boundary EMP word boundary
    // _ counts as part of a word though
    
    for (String string : examples) {
        if(pattern.matcher(string.replace("_", " ")).find()) {
            System.out.println(string + " is EMP");
        } else {
            System.out.println(string + " is not.");
        }
    }
    

    打印

    incoming_EMP_data.dat is EMP
    EMP.pemp is EMP
    Hurz-EMP#poof is EMP
    ~EMP= is EMP
    XYZ_TEMP.dat is not.
    1EMP2 is not.
    ßEMPö is not.
    

    \b 的好处在于,即使单词边界是字符串的开头或结尾,它也会匹配。这是其他不容易解决的问题。不幸的是,_ 被认为是单词的一部分,因此您必须替换它(如上所述)或扩展模式以将其包含为替代 "(\\b|_)EMP(\\b|_)"

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-27
      相关资源
      最近更新 更多