[英]How can i upgrade this regex not capture “1hey” or “123_456_bye” or “1123_hey”
[英]How can I format a string as a number (123) 456-7890
我有一個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;
}
}
}
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();
您可以將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,"-");
但是在我的視黃蛋白中,正則表達式更加有用和清晰。
我只是通過發現.substring回答了自己的問題。 看來這是一個非常基本的答案。 感謝您的幫助,因為我僅在2周前才開始學習Java。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.