mirror of
https://github.com/201206030/novel-plus.git
synced 2025-04-27 01:30:51 +00:00
章节字数计算规则优化
This commit is contained in:
parent
a4f7042b87
commit
9a19a33406
@ -3,6 +3,10 @@ package com.java2nb.novel.core.utils;
|
|||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
import java.util.regex.Matcher;
|
||||||
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
|
import static java.util.regex.Pattern.*;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author xiongxiaoyang
|
* @author xiongxiaoyang
|
||||||
@ -70,4 +74,83 @@ public class StringUtil {
|
|||||||
return result.toString();
|
return result.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取字符串有效汉字
|
||||||
|
* */
|
||||||
|
public static String getChineseValidWord(String origStr){
|
||||||
|
|
||||||
|
//可以替换大部分空白字符, 不限于空格 . 说明:\s 可以匹配空格、制表符、换页符等空白字符的其中任意一个
|
||||||
|
origStr = origStr.replaceAll("\\s*","");
|
||||||
|
|
||||||
|
/* //完全清除标点
|
||||||
|
origStr = origStr.replaceAll("\\pP","");*/
|
||||||
|
|
||||||
|
//清除所有符号,只留下字母 数字 汉字 共3类.
|
||||||
|
origStr = origStr.replaceAll("[\\pP\\p{Punct}]","");
|
||||||
|
|
||||||
|
//去除字母和数字
|
||||||
|
origStr = origStr.replaceAll("[A-Za-z0-9]*","");
|
||||||
|
|
||||||
|
return origStr;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取字符串英文单词数量
|
||||||
|
* */
|
||||||
|
public static int getEnglishWordCount(String origStr){
|
||||||
|
Pattern pattern = compile("\\b\\w+\\b");
|
||||||
|
Matcher matcher = pattern.matcher(origStr);
|
||||||
|
int count = 0;
|
||||||
|
while (matcher.find()) {
|
||||||
|
count++;
|
||||||
|
}
|
||||||
|
return count;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取字符串中文汉字数量
|
||||||
|
* */
|
||||||
|
public static int getChineseWordCount(String origStr){
|
||||||
|
Pattern pattern = compile("[\u4e00-\u9fa5]");
|
||||||
|
Matcher matcher = pattern.matcher(origStr);
|
||||||
|
int count = 0;
|
||||||
|
while (matcher.find()) {
|
||||||
|
count++;
|
||||||
|
}
|
||||||
|
return count;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取字符串有效数字数量
|
||||||
|
* */
|
||||||
|
public static int getNumberWordCount(String origStr){
|
||||||
|
Pattern pattern = compile("\\d+");
|
||||||
|
Matcher matcher = pattern.matcher(origStr);
|
||||||
|
int count = 0;
|
||||||
|
while (matcher.find()) {
|
||||||
|
count++;
|
||||||
|
}
|
||||||
|
return count;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取字符串有效字数
|
||||||
|
* */
|
||||||
|
public static int getStrValidWordCount(String origStr){
|
||||||
|
return getChineseWordCount(origStr) + getEnglishWordCount(origStr) + getNumberWordCount(origStr);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
String str = "Welcome to China. 你好呀!中国人,我是1123号程序员, 来给你服务23天. Hello Word";
|
||||||
|
System.out.println(getChineseWordCount(str));
|
||||||
|
System.out.println(getEnglishWordCount(str));
|
||||||
|
System.out.println(getNumberWordCount(str));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -547,7 +547,7 @@ public class BookServiceImpl implements BookService {
|
|||||||
}
|
}
|
||||||
Long lastIndexId = new IdWorker().nextId();
|
Long lastIndexId = new IdWorker().nextId();
|
||||||
Date currentDate = new Date();
|
Date currentDate = new Date();
|
||||||
int wordCount = content.length();
|
int wordCount = StringUtil.getStrValidWordCount(content);
|
||||||
|
|
||||||
//更新小说主表信息
|
//更新小说主表信息
|
||||||
bookMapper.update(update(BookDynamicSqlSupport.book)
|
bookMapper.update(update(BookDynamicSqlSupport.book)
|
||||||
@ -794,7 +794,7 @@ public class BookServiceImpl implements BookService {
|
|||||||
//作者ID相同,表明该小说是登录用户发布,可以修改
|
//作者ID相同,表明该小说是登录用户发布,可以修改
|
||||||
if (book.getAuthorId().equals(authorId)) {
|
if (book.getAuthorId().equals(authorId)) {
|
||||||
Date currentDate = new Date();
|
Date currentDate = new Date();
|
||||||
int wordCount = content.length();
|
int wordCount = StringUtil.getStrValidWordCount(content);
|
||||||
|
|
||||||
//计算价格
|
//计算价格
|
||||||
int bookPrice = new BigDecimal(wordCount).divide(bookPriceConfig.getWordCount()).multiply(bookPriceConfig.getValue()).intValue();
|
int bookPrice = new BigDecimal(wordCount).divide(bookPriceConfig.getWordCount()).multiply(bookPriceConfig.getValue()).intValue();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user