我试图用国际标准字母/数字映射用数字替换每个字母。我的输出正确运行但是,如何让电话号码中的破折号自动出现在输出中?例如,如果我输入1800Flowers,则打印出18003569377.如何在不使用正则表达式的情况下将其打印为1-800-3569377?
namespace HelloWebServer
{
public partial class Program
{
GT.Networking.WebEvent sayHello;
void ProgramStarted()
{
ethernet.UseDHCP();
ethernet.NetworkUp += new GTM.Module.NetworkModule.NetworkEventHandler(ethernet_NetworkUp);
ethernet.NetworkDown += new GTM.Module.NetworkModule.NetworkEventHandler(ethernet_NetworkDown);
led.TurnBlue();
}
void ethernet_NetworkUp(GTM.Module.NetworkModule sender, GTM.Module.NetworkModule.NetworkState state)
{
led.TurnGreen();
string ipAddress = ethernet.NetworkSettings.IPAddress;
Debug.print("ip address"+ipAddress);
WebServer.StartLocalServer(ipAddress, 80);
sayHello = WebServer.SetupWebEvent("hello");
sayHello.WebEventReceived += new WebEvent.ReceivedWebEventHandler(sayHello_WebEventReceived);
}
void sayHello_WebEventReceived(string path, WebServer.HttpMethod method, Responder responder)
{
string content = "<html><body><h1>Hello World!!</h1></body></html>";
byte[] bytes = new System.Text.UTF8Encoding().GetBytes(content);
responder.Respond(bytes, "text/html");
}
void ethernet_NetworkDown(GTM.Module.NetworkModule sender, GTM.Module.NetworkModule.NetworkState state)
{
led.TurnRed();
}
}
答案 0 :(得分:3)
您可以将正则表达式与String.replaceAll
一起使用。删除前导的一个,分组前三个数字,后三个数字和最后一组数字。像
public static String formatNumber(String phoneNumber) {
if (phoneNumber.startsWith("1")) {
phoneNumber = phoneNumber.substring(1);
}
return phoneNumber.replaceAll("(\\d{3})(\\d{3})(\\d+)", "1-$1-$2-$3");
}
或强>
public static String formatNumber(String phoneNumber) {
return phoneNumber.replaceAll("1(\\d{3})(\\d{3})(\\d+)", "1-$1-$2-$3");
}
然后将其称为
System.out.println(formatNumber(getNumber(phoneNumber)));
我用1800flowers
运行它并得到(正如预期的那样)
1-800-356-9377
或没有像
这样的正则表达式public static String formatNumber(String phoneNumber) {
if (phoneNumber.startsWith("1")) {
phoneNumber = phoneNumber.substring(1);
}
return "1-".concat(phoneNumber.substring(0, 3)) //
.concat("-").concat(phoneNumber.substring(3, 6)) //
.concat("-").concat(phoneNumber.substring(6));
}
在致电formatNumber
之前,您可以使用类似
public static String removeDashes(String phoneNumber) {
StringBuilder sb = new StringBuilder();
for (char ch : phoneNumber.toCharArray()) {
if (ch != '-') {
sb.append(ch);
}
}
return sb.toString();
}
然后
System.out.println(formatNumber(removeDashes(getNumber(phoneNumber))));