為了弄清起點小說如何算字扣錢,我特意註冊了作家賬號

2023-05-04 18:01:00

閒來無事,想起這些年也算給起點貢獻了不少流量和金錢。
在起點的會員訂閱規則裡,如下圖所示,重點關注2,3和6點,一個是怎麼算錢的,一個是怎麼算字數的。
計費跟字數相關,歸根結底,都是怎麼算錢的事兒。

1. 怎麼算字數

「作品字數以起點計數系統為準。」

起點沒有公佈計數系統的統計標準。所以就有了本文,我們來猜一猜嘛。

在書架上隨手找了一本之前訂閱過的書,找了章公眾章節。
如下所示,共858字。

找個線上的OCR把圖片識別成文字,再手動檢查一遍,確保沒有錯漏。
然後使用java String的length()方法看看。
為了方便感興趣的同學,我把識別出來的文字也發出來。

String text = "截止到今天,日兩萬已經持續了整整十天,換句話說...這個月我已經更新了20萬字了。" +
                "原定計劃是日兩萬堅持到月底的,但最近大家的反饋讓我意識到,我不能太執著於數量了,文的質量也是櫃當重要的一環。" +
                "再加上...我寫的真的太快了,這個成績該有的推薦還沒到,我這本書的字數都已經快要攔不住了。" +
                "這個月底上導讀,而下個月說不定還有更好的推薦...考慮到整本書的壽命,我的確是該把更新的速度放緩。" +
                "不過大家放心,速度放緩並不代表會虧欠大家。" +
                "日更兩萬改成接下來兩個月每天日萬,總數還是不變的,只是時間會拉長一點.." +
                "原諒一下我的私心哈,我也想讓自己的作品能儘可能的壽命長一些。" +
                "好在我這本不是特別單純的單女主狗糧文,女主的身份可以讓這本書加一些文娛要素。" +
                "當然,就算是文娛要素,整本書的核心賣點肯定還是甜和日常。" +
                "所以就算後面會開一些事業線,事業線的作用更多的還是輔助日常與甜,不會鳩佔鵲巢,讓這本書的整體節奏變得奇怪。" +
                "而接下來還有很多可以寫的地方,像是鋪墊了很久的,這條讓小劉事業騰飛的事業線。" +
                "以及一些疑似敗犬的落寞退場(慘!)" +
                "等小裴回歸之後,準備搬上日程的公開。" +
                "還有公開之後各方反應,後續雙方漸漸交織在一起的事業線這些。" +
                "乃至於後面的嗑cp" +
                "當然,小劉的直播事業也不會落下,遊戲這方面可是作者的強項(笑)" +
                "————"+
                "減少更新其實讓我心裡挺不安的,畢竟我一直不敢相信是自己這本書寫得好,只是一廂情願的以為成績好是因為更新量大。" +
                "而現在更新量放了下來,我的壓力也算是拉滿了..." +
                "所以如果可以的話,我還是想腆著臉的跟大家要一個追訂。" +
                "資料對我真的蠻重要的,有的時候大家評論也會讓我開心很久。" +
                "嗯...不好的評論當然也會讓我emo很久,不過還好,我心理調節能力很強。" +
                "畢竟叫撲了600萬字了...我現在只想把這本書寫好,機會到面前了,我不想放棄。" +
                "從明天開始,每天雷打不動一萬的更新,將會持續很長一段時間。" +
                "但我應該會用跟現在一樣的時間去打磨每一章,儘可能的不讓大家感覺到無聊無趣。" +
                "望大家諒解!" +
                "啊,當然,會時不時的不定期進行爆更,說不定十更這種事...隔上個一兩週就來一次呢~" +
                "畢竟咱的手速大夥心裡都有數是吧〜";

        System.out.println(text.length());

輸出875。
很明顯多了。

幾個猜測,首先中文的任意字,字元肯定是算1個字元長度的,比如,, ,甚至中文多個句號當省略號。。。。。。也會被計算為6個字。
然後英文單詞只會計算成一個長度。
其次英文輸入法中的...也只會計算一個長度。

暴力點,直接先來一波驗證一下。

以下測試程式碼將英文輸入法下的...替換成一個字元,然後將連續的數位和英文單詞(包含創造出的網路詞彙英文縮寫,或者叫連線的英文字母,拼音)也當成一個字元長度。
具體做法是先替換為空,再在後邊統計的時候補上個數。


String temp = text.trim().replace("...", ".").replace("..", ".");
String s = "\\d+.\\d+|\\w+";
Pattern pattern=Pattern.compile(s);
Matcher ma=pattern.matcher(temp);

List<String> words = new ArrayList<>();
while(ma.find()){
    String word = ma.group();
    words.add(word);
    temp = temp.replace(word, "");
}

System.out.println(temp.length() + words.size());

輸出856。
但是起點計數系統統計出來是858。
差了2個字。


這章的標題是4個字,如果是標題的原因,那應該是差4個字,所以標題應該是不計數的。


也有可能是圖片轉文字的差異,可能是一些符號()不太容易分辨是哪種輸入法,還有看不出來是分隔符還是破折號的"———"造成的差異。


更直接點,我下載了一個起點的作家助手,將上述文字直接輸到公眾章節,讓起點計數系統統計,結果與我原生程式碼統計是一樣的。

從側面證明上述的猜測是對的。

所以起點真就是這樣直接使用String.length()計算出來的?

為了更加的嚴謹,我再新增了一部小說,《重生之不做程式設計師》。

第一章《英雄遲暮》,正文內容為「SUN公司被Oracle收購,是否意味著java被逼上了死路?」

 String text2 = "sum公司被Oracle收購,是否意味著java被逼上了死路?";
        String temp = text2.trim().replace("...", ".").replace("..", ".");
        String s = "\\d+.\\d+|\\w+";
        Pattern pattern=Pattern.compile(s);
        Matcher ma=pattern.matcher(temp);

        List<String> words = new ArrayList<>();
        while(ma.find()){
            String word = ma.group();
            words.add(word);
            temp = temp.replace(word, "");
        }
        System.out.println(temp.length() + words.size());

輸出21.

數位600000000被算作一個字。

特殊字元呢?
比如