检查字符串是不是遵循某种格式?

Posted

技术标签:

【中文标题】检查字符串是不是遵循某种格式?【英文标题】:Check if a String follows a certain format?检查字符串是否遵循某种格式? 【发布时间】:2016-06-07 16:38:33 【问题描述】:

我编写了一个程序,它接受一个 ASCII 字符输入(它实际上接受一个字符串,然后我使用 charAt(0))到一个 JTextField,然后使用 g2d.drawString() 显示它的十六进制、二进制、整数和八进制值。我还希望能够输入“整数”值(实际上是字符串)并显示信息。为了将“整数”值与“字符”输入分开,我希望能够按原样输入字符值,并使用模式#i 输入整数。这样,我可以使用 if 语句来检查是否遵循“整数”模式,否则(否则)将输入评估为 ascii“char”。如何检查字符串是否遵循这种模式?

示例:

字符输入:

3 //I'll evaluate this as the ascii character value of 3

int 输入:

3i //I'll evaluate this as the integer value of 3

注意:整数输入可以是多位数字。

【问题讨论】:

@MadProgrammer tutorialspoint.com/java/java_regular_expressions.htm 如果这就是您所说的,似乎它可能就是问题所在。谢谢。 基本上,我要问的问题是,你知道什么是正则表达式吗?你试过了吗,但似乎答案是(通常)不,但知道你知道,所以一切都很棒! ;) @MadProgrammer 是的。非常感谢,很高兴你和 Logan 向我展示了这个,这似乎是一个非常有用的概念。我没有意识到有一个完整的类是用来查找字符串模式的。当我查找模式时,我通常将 String 拆分为一个 char 数组,然后使用 switch 语句在数组中循环查找我需要的字符。当然,在这种情况下不起作用,因为我不知道字符串的长度,因为输入的值可能是多位数字。 哦,是的,您应该一定了解正则表达式。如果使用得当,它们可以非常强大,但它们不能做所有事情,例如。尽管很多人一直在尝试,但它们无法处理复杂的嵌套语法。 【参考方案1】:

查看Pattern 类。你可以用它做你想做的事。

【讨论】:

谢谢洛根。照常。 Javadoc 有答案! 不客气,哈哈。这对我来说已经派上用场了。 Logan,我接受了 Andreas 的回答,因为它在上下文中更有意义,但是,你的回答也很棒,我赞成。 没问题。谢谢。【参考方案2】:

这样的?

if (str.length() == 1) 
    char ch = charAt(0);
    // code here
 else if (str.endsWith("i")) 
    int num = Integer.parseInt(str.substring(0, str.length() - 1));
    // code here
 else 
    throw new IllegalArgumentException("Bad input: " + str);

如果i 之前的值无效,parseInt() 将抛出 NumberFormatException。由于这是IllegalArgumentException 的子类,因此上面的代码将为任何错误文本抛出IllegalArgumentException

【讨论】:

现在有趣的是,在这种情况下,特别是这将起作用,因为我知道“i”总是在最后。然而,在一般意义上,Logan/MadProgrammer 的方式更好,因为它允许更多的适应性。 @MadProgrammer 我应该接受哪一个?总体上更好的情况,或者更具体的情况可以更好地具体回答这个问题。 @AshwinGupta 您应该接受最能接受的答案,但您可以对所有您认为有用的答案进行投票。 @AshwinGupta 尽管正则表达式可以做到这一点,并且擅长它,但对于您的特定目的来说,这确实是矫枉过正。 ;-) 感谢您的建议!另外我一定会尝试学习正则表达式。现在,我的程序正在运行。我实际上想出了另一种方法,我可以使用 swing JList 来选择它是 int 还是 char。

以上是关于检查字符串是不是遵循某种格式?的主要内容,如果未能解决你的问题,请参考以下文章

检查列中的字符串是否匹配两种格式之一,如果不重新设置字符串格式

检查字符串是不是以某种模式结束

使用数字格式检查给定字符串是不是为有效货币

快速正则表达式检查字符串是不是为金额格式(2x,3x,...)

Oracle:检查数字列是不是包含格式化数字字符串中的值

java中正则表达式如何使用?比如判断一个字符串是不是满足某种格式,给个详细点的例子