我有一个Caller.class,其数字存储为" 1234567890,"我希望将标签lblCallbackNumber格式化为"(123)456-789"。这似乎比我更复杂,并且大多数网络搜索向人们展示了如何将电话号码重新格式化为常规号码(与我想要的相反)
非常感谢任何帮助!
package SupportTool;
import javafx.scene.control.*;
import java.io.*;
public class mainCallController extends Main {
public Label lblAccount;
public Label lblCallbackNumber;
public Label lblCallerName;
public Label lblStoreNumber;
public void initialize(){
// LOAD CALLER INFORMATION
Caller caller = new Caller();
try{
FileInputStream fis = new FileInputStream("caller.bin");
ObjectInputStream ois = new ObjectInputStream(fis);
caller = (Caller) ois.readObject();
ois.close();
fis.close();
} catch (Exception e) {
e.printStackTrace();
}
// SET LABELS TO CALLER DETAILS
lblAccount.setText(caller.getAccount());
String numberAsString = caller.getCallbackNumber();
lblCallbackNumber.setText(phoneFormat(numberAsString));
lblCallerName.setText(caller.getCallerName());
lblStoreNumber.setText(caller.getStoreNumber());
}
private String phoneFormat (String number){
if(number.length() == 10) {
// TODO RETURN numberAsString FORMATTED AS "(123) 456-7890"
} else {
return number;
}
}
}
答案 0 :(得分:1)
String s = "1234567890";
StringBuilder sb = new StringBuilder();
sb.append("(").append(s.substring(0,3)).append(") ").append(s.substring(3,6))
.append("-").append(s.substring(6,9));
sb.toString();
答案 1 :(得分:1)
您可以使用regexp完成任务。 像这样的东西
number = number.replaceFirst("(\\d{3})(\\d{3})(\\d{4})", "($1) $2-$3");
此代码会将您的电话号码拆分为3个区块(3位数,3位数,4位数),并按照模式"($1) $2-$3"
另一种方法是使用StringBuilder插入括号和空格
StringBuilder builder = new StringBuilder(number)
.insert(0,"(")
.insert(4,") ")
.insert(8,"-");
但在我的观点中,regexp更有用,更清晰。
答案 2 :(得分:-1)
我刚刚通过发现.substring回答了我自己的问题。看来这是一个非常基本的答案。感谢您的帮助,因为我刚刚在2周前开始学习java。