Java-对输入使用indexOf方法



因此,我试图在用户给定的输入中找到一个特定的字符。在这个问题中,用户使用格式输入英国电话号码

(XXXX)XXX XXXX或(XXXXX)XXX XXX

其中区号由括号内的数字组成,个人电话号码由括号后的数字组成。

到目前为止,我曾尝试使用indexOf(String)方法在用户的输入中查找右括号,但没有成功,这是我的代码:

import javax.swing.JOptionPane;
public class L2ExerciseE {
public static void main(String[] args) {
String number = JOptionPane.showInputDialog("Please input thy number: ");
String areaCode = number.substring(1, indexOf(")"));
String telephoneNumber = number.substring((indexOf(")") + 1), 15);
System.out.println();
System.out.println("The area code is: " + areaCode);
System.out.println("The telephone number: " + telephoneNumber);
}
}

我想出现这个问题是因为java使用了编译器,而我以前的语言Python使用了解释器,尽管我尝试过阅读其他答案,但我在理解它们时遇到了严重的困难。

我能做些什么来让我的代码在不过度复杂化的情况下工作?目前,我们只看到了一些I/O命令、算术命令、基本串联,以及一些其他命令,如.substring().indexOf().trim()

提前非常感谢!

indexOf()不是一个独立的函数(Java中没有任何东西是独立的函数),它是String上的一个方法。您需要使用number.indexOf(")")-您正在number中查找")"

请尝试以下操作。字符串类的文档https://docs.oracle.com/javase/7/docs/api/java/lang/String.html#substring(int)

String areaCode = name.substring(name.indexOf("(")+1,name.indexOf(")"));
String personalNo = name.substring(name.indexOf(")")+1);

使用正则表达式模式:

String number = "(1234) 123 1234";
String pattern = "\((\d{4})\) (\d{3} \d{4})|\((\d{5})\) (\d{3} \d{3})";
Pattern r = Pattern.compile(pattern);
Matcher m = r.matcher(number);
if (m.find()) { 
System.out.println("Found area code: " + m.group(1));
System.out.println("Found personal number: " + m.group(2));
}

基于正则表达式的解决方案可能是可行的,因为您的确切数字模式可能有一些变化。例如,一个有多个空格的数字可能仍然被认为是有效的,这很容易在正则表达式中表达。

演示

您的代码中有一个错误。试试这个:字符串areaCode=number.substring(1,number.indexOf(")");字符串telephoneNumber=number.substring((number.indexOf(")")+1),15);

相关内容

  • 没有找到相关文章

最新更新