Java程序,将许多空格转换为制表符(\ t)

时间:2017-11-08 12:47:00

标签: java string

例如,我有以下数据

  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

与我的期望不符合

4 个答案:

答案 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();


}

}

为什么不按空格标记?