例如,我有以下数据
1007 0
1008 0
1009 0
在上面的数据中,我想将其转换为生成这样的数据
1007 (tab) 0
1008 (tab) 0
1009 (tab) 0
我有这样的代码,但输出不是预期的
import java.util.Scanner;
import java.util.StringTokenizer;
public class SpaceToTab {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("Masukkan data : ");
String x = sc.nextLine().trim();
StringTokenizer st = new StringTokenizer(x,"\n");
while (st.hasMoreTokens()){
String y = st.nextToken().replaceAll("\\s+","\t");
System.out.println(y);
}
}
}
以上程序产生输出 1007(tab)0
与我的期望不符合
答案 0 :(得分:2)
SELECT * FROM t1 INNER JOIN t5 ON t1.fullVisitorId = t5.fullVisitorId AND t1.visitNumber <= t5.visitNumber
没有额外charset参数的InputStreamReader使用平台默认值,与System.in相同。
扫描程序执行过多,令牌化,行/令牌级别。
前面(和末尾)的空间被修剪掉了。
答案 1 :(得分:0)
删除StringTokenizer并将其移至循环:
Scanner sc = new Scanner(System.in);
System.out.println("Masukkan data : ");
while (sc.hasNext()) {
String x = sc.nextLine().trim();
x = x.replaceAll("\\s+", "\t");
System.out.println(x);
}
答案 2 :(得分:0)
试试这个。
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String line = scanner.nextLine();
if (line!=null && line.contains(" ") {
String[] split = line.split(" ");
System.out.println(split[0] + " (tab) "+split[1]);
}
}
答案 3 :(得分:0)
import java.util.Scanner;
import java.util.StringTokenizer;
public class SpaceToTab {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("Masukkan data : ");
String x = sc.nextLine().trim();
StringTokenizer st = new StringTokenizer(x," ");
System.out.println(st.countTokens());
String y = "";
while (st.hasMoreTokens()){
String i = st.nextToken();
if(!i.trim().equals("0"))
{
y = y+i+ "\t";
} else
{
y = y + i + " ";
}
}
System.out.println(y);
sc.close();
}
}
为什么不按空格标记?