【问题标题】:Java string manipulation for validity有效性的 Java 字符串操作
【发布时间】:2020-05-24 12:57:01
【问题描述】:

比如说我有这个字符串:

“他的名字是贾斯汀霍夫曼”

并且需要检查它是否是一个有效的名字:

为了让它返回 true,我需要确保在“is”之前有“他的名字”,并且在“is”之后需要“Justin Hoffman” 我如何检查我之前是否有正确的子字符串"is" 和 "is" 后面的正确的一个

【问题讨论】:

  • 显示你尝试过的代码行@Roosevelt James
  • 您能向我们展示您到目前为止所做的尝试吗? @罗斯福詹姆斯

标签: java string loops validation substring


【解决方案1】:
String sentence = "His name is Justin Hoffman";
String[] splitSentence = sentence.split(" is ");
String first = splitSentence[0]; // His name
String second = splitSentence[1]; // Justin Hoffman
boolean isTrue = (first.equals("His name") && second.equals("Justin Hoffman"));

【讨论】:

    【解决方案2】:
    String input = "His name is Justin Hoffman";
    
    String requiredFirstName = "His name";
    String requiredLastName = "Justin Hoffman";
    String delimiter = " is ";
    
    // Example 1
    if (input.equals(requiredFirstName + delimiter + requiredLastName))
    {
        System.out.println("The input is OK");
    }
    
    // Example 2
    int posi = input.indexOf(delimiter);
    if (posi > 0) // found
    {
        String leftPart = input.substring(0, posi);
        String rightpart = input.substring(posi + delimiter.length());
        if (requiredFirstName.equals(leftPart) && requiredLastName.equals(rightpart))
        {
            System.out.println("The input is OK");
        }
    }
    
    // Example 3
    String[] parts = input.split(delimiter);
    if (requiredFirstName.equals(parts[0]) && requiredLastName.equals(parts[1]))
    {
        System.out.println("The input is OK");
    }
    

    第二个例子可能是最快的,因为它不会产生临时字符串。第三个例子是最慢的。请注意分隔符中的特殊字符,因为 split() 函数将参数解释为正则表达式。

    【讨论】:

    • 比如说,而不是前半部分必须是“他的名字”,“is”之前的字符串的前半部分实际上可以是任何东西,如果我愿意,甚至可以是单个字符。我如何检查以确保它在“is”之前至少有一个字符?
    • 以示例2为例,省略requiredFirstName.equals(leftPart)的检查。表达式 posi > 0 已经进行了您想要的检查,它的意思是“如果在字符串的开头 之后(而不是 开头)找到了分隔符。
    • 另一个简短的例子:if (input.endsWith(delimiter+lastname))。但这又不是最快的解决方案,因为字符串连接。
    猜你喜欢
    • 2015-03-08
    • 2014-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多