1. 程式人生 > >Java工具 java實現從網頁上覆製表格,自動生成Markdown形式表格

Java工具 java實現從網頁上覆製表格,自動生成Markdown形式表格

java實現從網頁上覆製表格

需求分析

例如我這裡有一個表格:

表格裡的文字是可複製的,複製下來的文字如下。

序號  方法  描述
1   public URL(String spec) throws MalformedURLException    根據 String 表示形式的地址建立 URL 物件。
2   public URL(String protocol,String host,int port,String file) throws MalformedURLException   建立URL物件,並指定協議protocol,主機host,埠名稱port,資原始檔名file
3   public
URLConnection openConnection() throws IOException 返回一個 URLConnection 物件,它表示到 URL 所引用的遠端物件的連線。 4 public final InputStream openStream() throws IOException 開啟到此 URL 的連線並返回一個用於從該連線讀入的 InputStream

現在需要,把這個複製下來的文字生成markdown表格。

基本實現

觀察這個文字,我發現,每個單元格之間不多不少剛好有兩個空白符,所以,只要發現有兩個空白符的地方我就認為表格中單元格之間的邊界。
程式碼如下所示:

package regex.tools;

import java.util.Scanner;
import clipboard.util.SysClipboardUtil;

public class MDtable
{
    public static void main(String[] args)
    {
        String text=SysClipboardUtil.getSysClipboardText();
        System.out.println(text);
        Scanner scanner=new Scanner(text);
        String line;
        String[] fragments;
        System.out
.println("-------------------------------------------"); boolean flag=true; while(scanner.hasNextLine()) { line=scanner.nextLine(); //剛好兩個的地方分割 fragments=line.split("\\s{2}"); // System.out.println("line:--->"); // System.out.println("fragments:"); System.out.print("|"); for (String string : fragments) { System.out.print(string+"|"); } System.out.println(); //打印表格對其方式,使用預設對齊方式 if(flag) { System.out.print("|"); for(int i=0;i<fragments.length;i++) { System.out.print("-|"); } System.out.println(); flag=false; } } } }

測試

複製表格中的文字

然後執行上面的程式碼,執行結果如下。

序號  方法  描述
1   public URL(String spec) throws MalformedURLException    根據 String 表示形式的地址建立 URL 物件。
2   public URL(String protocol,String host,int port,String file) throws MalformedURLException   建立URL物件,並指定協議protocol,主機host,埠名稱port,資原始檔名file
3   public URLConnection openConnection() throws IOException    返回一個 URLConnection 物件,它表示到 URL 所引用的遠端物件的連線。
4   public final InputStream openStream() throws IOException    開啟到此 URL 的連線並返回一個用於從該連線讀入的 InputStream
-------------------------------------------
|序號|方法|描述|
|-|-|-|
|1|public URL(String spec) throws MalformedURLException|根據 String 表示形式的地址建立 URL 物件。|
|2|public URL(String protocol,String host,int port,String file) throws MalformedURLException|建立URL物件,並指定協議protocol,主機host,埠名稱port,資原始檔名file|
|3|public URLConnection openConnection() throws IOException|返回一個 URLConnection 物件,它表示到 URL 所引用的遠端物件的連線。|
|4|public final InputStream openStream() throws IOException|開啟到此 URL 的連線並返回一個用於從該連線讀入的 InputStream|

效果

把markdown表格程式碼貼上到markdown文件中,效果如下。

序號 方法 描述
1 public URL(String spec) throws MalformedURLException 根據 String 表示形式的地址建立 URL 物件。
2 public URL(String protocol,String host,int port,String file) throws MalformedURLException 建立URL物件,並指定協議protocol,主機host,埠名稱port,資原始檔名file
3 public URLConnection openConnection() throws IOException 返回一個 URLConnection 物件,它表示到 URL 所引用的遠端物件的連線。
4 public final InputStream openStream() throws IOException 開啟到此 URL 的連線並返回一個用於從該連線讀入的 InputStream

可以看到這樣就很容易的複製一個表格了。

程式碼優化

Java複製網上表格的方法

把上面的程式碼封裝成方法:

/**
 * 生成markdown表格。
 * @param text 複製的表格文字
 * @return markdown表格程式碼
 */
public static String toMarkdownTable(String text)
{
    StringBuilder sBuider=new StringBuilder();
    Scanner scanner=new Scanner(text);
    String line;
    String[] fragments;
    boolean flag=true;
    while(scanner.hasNextLine())
    {
        line=scanner.nextLine();
        //剛好兩個的地方分割
        fragments=line.split("\\s{2}");
//          System.out.print("|");
        sBuider.append("|");
        for (String string : fragments)
        {
//              System.out.print(string+"|");
            sBuider.append(string+"|");
        }
//          System.out.println();
        sBuider.append("\n");
        //打印表格對其方式,使用預設對齊方式
        if(flag)
        {
//              System.out.print("|");
            sBuider.append("|");
            for(int i=0;i<fragments.length;i++)
            {
//                  System.out.print("-|");
                sBuider.append("-|");
            }
//              System.out.println();
            sBuider.append("\n");
            flag=false;
        }
    }
    return sBuider.toString();
}

呼叫方式

呼叫:

public static void main(String[] args)
{
    //從剪貼簿獲取文字
    String text=SysClipboardUtil.getSysClipboardText();
    //寫回剪貼簿
    SysClipboardUtil.setSysClipboardText(toMarkdownTable(text));
}

執行結果

控制檯沒有輸出,markdown表格程式碼已經寫到剪貼簿中去了,不再貼上,效果和上面的一致。

依賴類:

完整的程式碼:

package regex.tools;

import java.util.Scanner;
import clipboard.util.SysClipboardUtil;

public class MDtable
{
    public static void main(String[] args)
    {
        // 從剪貼簿獲取文字
        String text = SysClipboardUtil.getSysClipboardText();
        // 寫回剪貼簿
        SysClipboardUtil.setSysClipboardText(toMarkdownTable(text));
    }

    /**
     * 生成markdown表格。
     * 
     * @param text
     *            複製的表格文字
     * @return markdown表格程式碼
     */
    public static String toMarkdownTable(String text)
    {
        StringBuilder sBuider = new StringBuilder();
        Scanner scanner = new Scanner(text);
        String line;
        String[] fragments;
        // System.out.println("-------------------------------------------");
        boolean flag = true;
        while (scanner.hasNextLine())
        {
            line = scanner.nextLine();
            // 剛好兩個的地方分割
            fragments = line.split("\\s{2}");
            // System.out.println("line:--->");
            // System.out.println("fragments:");
            // System.out.print("|");
            sBuider.append("|");
            for (String string : fragments)
            {
                // System.out.print(string+"|");
                sBuider.append(string + "|");
            }
            // System.out.println();
            sBuider.append("\n");
            // 打印表格對其方式,使用預設對齊方式
            if (flag)
            {
                // System.out.print("|");
                sBuider.append("|");
                for (int i = 0; i < fragments.length; i++)
                {
                    // System.out.print("-|");
                    sBuider.append("-|");
                }
                // System.out.println();
                sBuider.append("\n");
                flag = false;
            }
        }
        return sBuider.toString();
    }
}

相關推薦

Java工具 java實現網頁表格自動生成Markdown形式表格

java實現從網頁上覆製表格 需求分析 例如我這裡有一個表格: 表格裡的文字是可複製的,複製下來的文字如下。 序號 方法 描述 1 public URL(String spec) throws MalformedURLExceptio

Java實現網頁傳匯入excel資料到資料庫

       一晃已經是十月份的最後一天了,時間過得很快...        專案中通過excel往資料庫批量匯入的功能頗為常見,所以今天整理出來一份簡單的例子,為了以後方便使用,同時也為大家實現功能作為一個參考

實現網頁抓取資料(htmlparser)

package com.jscud.test; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.InputStreamReader; impo

java+jsp程式碼實現FTP伺服器傳下載檔案

首先宣告一下。jsp從ftp伺服器上面下載檔案,有兩種方法1.直接給出檔案的地址 2.將檔案作為位元組流返回給瀏覽器 一 、先說第一種吧(這種發放很簡單)。 1.直接使用一個超連結:<a href='ftp://FTP使用者名稱:密碼@IP地址:埠號+ 後面是路徑 (

java Script 用if else 實現大到小指定輸出升序排列

else if 升序 scrip 實現 amp 輸出 pro 一個數 rip 我只是一個小白 各位大神看到不要介意 var a = Number(prompt("請輸入你需要排列的第一個數字")) var b = Number(prompt("請輸入你需要

FastDFS:Java客戶都實現檔案的傳、下載、修改、刪除

客戶端版本:fastdfs_client_v1.24.jar   配置檔案 connect_timeout = 200 network_timeout = 3000 charset = UTF-8 http.tracker_http_port = 8080 http.anti_steal

JAVA中建立HTTP通訊伺服器獲取HTML程式碼通過HTTP請求來下載圖片或其他二進位制檔案的程式下載結果要按下載到的檔案型別進行存檔中。

通過HTTP請求來下載圖片或其他二進位制檔案的程式,下載結果要按下載到的檔案型別進行存檔 將程式碼從伺服器的中獲取下來的程式碼,在我之前已經講過了這裡寫連結內容 這裡我們就直接將原始碼稍加改動,加入一個檔案並請將builder 寫入即可。 import

java 中 FtpClient 實現 FTP 檔案傳、下載

package ftp; import java.io.BufferedWriter; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.FileWrit

java jsp+servlet實現登入網頁設計

這次涉及到四個檔案: 登入頁面:login.jsp 登入成功歡迎頁面:success.jsp 登入失敗頁面:fail.jsp Servlet處理檔案:LoginServlet.java 其實還涉及到一個檔案:web.xml,這個後面再說: 下面分別介紹這幾個檔案: //-------------------

JAVA 非同步ajax實現xls 檔案傳 並且解析xls

html:<!--upload html--> <input type="file" id="file" name="file" value="選擇檔案" /> <inpu

Java工具類——實現gif圖片縮放與剪下功能

比較實用, 可以處理gif動態圖片 java圖片處理工具類: package com.pinker.util; import java.awt.Color; import java.awt.Graphics; import java.awt.Image; import ja

java 基於List實現多檔案

       多檔案上傳這個問題以前困擾了我好久後來我經過我的不懈努力終於克服了,其實認真起來所有的事情都會變得特別簡單,直接上程式碼。 架包 (maven) 現在還在手動架包的我只能大寫的服 <dependency> <grou

Java工具實現校驗公民身份證的有效性

package com.api.util; import java.util.Calendar; import java.util.GregorianCalendar; import java.util.HashMap; import java.util.Map;

js+java實現的頭像傳和裁剪完美相容各種瀏覽器

1.前端剪下效果使用jquery+js+div+css實現 其中有個js圖片剪下外掛叫ImgCropper,吃外掛與jquery外掛一起使用會有bug,被我修改後能相容jquery了 如果需要了解更多關於ImgCropper外掛使用,請檢視原始碼或百度看例子吧 下面是我修改

java使用Jsch實現linux服務端下載檔案

java利用Jsch實現從linux服務端下載檔案          直接貼程式碼,大家只需改下配置,且充分驗證可行。          吐槽下,網上這類文章很多,但是沒幾個能用的(基本都是少依賴的類檔案),真是坑啊! 1. 設計一個SshConfiguration類,如下

java——鍵盤輸入一個年份並輸入一個月份(數字)輸出該月份有多少天

/* (程式頭部註釋開始) </p><p>* 程式的版權和版本宣告部分 * Copyright (c) 2011, 煙臺大學計算機學院學生 * 作 者: 李兆慶

java用ajax實現跨域傳圖片

說明 : 圖片伺服器是用Nginx搭建的,用的是Php語言 這個功能 需要 用到兩個js檔案: jquery.js和jquery.form.js <script type="text/javascript" src="js/jquery.js"></scr

Java 使用 FTP 實現大檔案傳下載

Java 上傳下載 1G 以上的檔案可以通過 http 協議或 ftp 實現,但是 http 協議對檔案上傳大小有限制,而且還不穩定,因此這裡使用 ftp 上傳。 ftp 上傳方式有兩種: 一、ASCII 傳輸方式:假定使用者正在拷貝的檔案包含

[開源]基於goapp+xterm實現webssh-網頁的SSH終端linux管理工具(golang)

 簡析 基於goapp+xterm實現webssh-網頁上的SSH終端,linux管理工具。 開源地址見文末。   特性 在網頁上實現一個SSH終端。從而無需Xshell之類的模擬終端工具進行SSH連線。 可以對互動命令進行審計、記錄 在頁面上按一個鍵,就能開啟一個webssh,並且自動登

FastDFS 工具實現文件傳_02

works storage scl imp pre nec style ret ima 一、jar 包    jar包下載:https://pan.baidu.com/s/1nwkAHU5 密碼:tlv6   或者   下載工程,安裝到 maven 本地倉庫   工程下載: