有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java中如何将字符串值转换为布尔值

我有通过Javasocket返回的字符串值。字符串值如下所示

<command valid="true" /> 
    and 
<command name="LoadDocument" executed="true" />

我需要读取这些字符串,并将“有效”和“执行”部分值存储到布尔变量中。(“有效”和“已执行”部分可以为真或假)。我尝试了以下解决方案

String str = "<command valid=\"true\" />"; // stored command in a String variable
boolean bool = Boolean.parseBoolean(str); // pass it as an argument

但是布尔值总是错误的。我该怎么做


共 (3) 个答案

  1. # 1 楼答案

    字符串valid=“true”; String executed=“true”

    布尔值validParsed=布尔值。解析布尔值(有效); Boolean executedParsed=布尔值。(已执行)

  2. # 2 楼答案

    我认为您可以使用regexpregex101.com

    private static final String REGEXP = "<command.+(?:valid|executed)=\"(?<val>[^\"]+)\"\\s*\\/>";
    private static final Pattern PATTERN = Pattern.compile(REGEXP);
    
    public static boolean isValidOrExecuted(String str) {
        Matcher matcher = PATTERN.matcher(str);
        boolean matches = matcher.matches();
        return matches && Boolean.parseBoolean(matcher.group("val"));
    }
    

    演示:

    System.out.println(isValidOrExecuted("<command valid=\"true\" />"));                            // true
    System.out.println(isValidOrExecuted("<command valid=\"false\" />"));                           // false
    System.out.println(isValidOrExecuted("<command name=\"LoadDocument\" executed=\"true\" />"));   // true
    System.out.println(isValidOrExecuted("<command name=\"LoadDocument\" executed=\"false\" />"));  // false
    
  3. # 3 楼答案

    你可以安全地这样做。首先,您必须确保字符串不为null,并且其值在此处,忽略大小写。因此,“true”或“true”将返回布尔值true,否则返回false

    String str = "true";
    String str1 = "ok";
    boolean bool = Boolean.parseBoolean(str);
    System.out.println(bool);
    boolean bool1 = Boolean.parseBoolean(str1);
    System.out.println(bool1);
    

    result

    true
    false