我正试图编写一个程序,读取图书的库存文件,并生成一个被写入屏幕的库存报告。我有困难试图格式化ISBN号码。输入文件中的ISBN是一个10位序列(Ex: 0321479270)。对于报告,我需要将其重新格式化为1-3-5-1位数字(ex0-321-479270)。
这是我到目前为止..。
import java.util.Scanner;
import java.io.File;
import java.io.IOException;
public class Inventory
{
public static void main(String[] args)throws IOException
{
//Vaiable declartions
int edition, quanity;
double pricePerBook;
String isbn, author, title, publisher;
//Open the file and set delimiters
File file = new File("inventory.txt");
Scanner inputFile = new Scanner(file);
inputFile.useDelimiter("_|/|\\r?\\n");
//Read from the file
while (inputFile.hasNext())
{
isbn = inputFile.next();
author = inputFile.next();
title = inputFile.next();
edition = inputFile.nextInt();
publisher = inputFile.next();
quanity = inputFile.nextInt();
pricePerBook = inputFile.nextDouble();
System.out.printf("%s" /* %s %s %d %s %d %f "*/, formatISBN(isbn)); //, author, title, edition, publisher, quanity, pricePerBook);
}
//Close the flie
inputFile.close();
}
//ISBN Method
public static String formatISBN(String isbn)
{
if (isbn.length() == 1)
{
isbn += -;
return isbn;
}
}
} 所以我在ISBN方法上有问题,我似乎不知道如何用"-“打印ISBN。
发布于 2016-04-11 22:50:44
提取子字符串是最简单的:
return String.format("%s-%s-%s-%s",
isbn.substring(0, 0 + 1),
isbn.substring(1, 1 + 3),
isbn.substring(4, 4 + 5),
isbn.substring(9, 9 + 1));发布于 2016-04-11 22:53:18
您可以使用正则表达式:
return isbn.replaceAll("(\\d)(\\d{3})(\\d{5})(\\d)", "$1-$2-$3-$4");发布于 2016-04-11 23:26:13
或者使用StringBuilder:
StringBuilder result = new StringBuilder();
StringBuilder stringBuilder = new StringBuilder("0321479270");
result.append(stringBuilder.charAt(0));
result.append("-");
result.append(stringBuilder.substring(1,3));
result.append("-");
result.append(stringBuilder.substring(4));
return result.toString();请记住,只有在isbn格式良好的情况下,这才有效。
https://stackoverflow.com/questions/36560379
复制相似问题