例如 用java怎么统计 这个字符串的字数 “海外引越し、Copyright Art Corporation”
解决方案 »
- 数据库连接
- HttpURLConnection的connect()方法作用
- 一道奇怪的面试题
- 一个java发送EMAIL的问问题:在main种正常,在servlet发就出现错误,错误如下
- 判断字符串1a2b3c4d5e6f格式是否正确,其中abcdef顺序可能互换,但只要是这六个字符就行
- 请教,在java中没有没 类似 window下的资源管理器 的控件???
- applet程序能否得到自己所在机器的ip地址(就是自己文件所在的服务器的地址)
- 我的java程序不能运行
- 初学者问几个概念问题!!
- 我写的播放声音的代码,但是可以读到文件 不能播放,请高手帮忙调试
- 怎么样用java的Swing来编写个小程序,用来转换日文的平假名与片假名!!
- linux 下 报java.lang.OutOfMemoryError: GC overhead limit exceeded错误
.length()这个不行吗?
页面显示新闻标题列表,如长度超过多少后面就以省略号替代这种须以str.getBytes().length来判断
然后再计算字符的长度 String.length
比如“ 个人字间、Copyright Art Corporation”里面有4个汉字, 3 个单词,所以字数统计起来是7个。哪能用length().这个函数啊
System.out.println(s.length());\\包括空格
System.out.println(s.length().trim());\\不包括空格
getCharacterInstance 把后面的英文拆开
getWordInstance 会把前面的4个汉字一起处理
public static void main(String[] args) throws Exception{
String str = "海外引越し、Copyright Art Corporation";
if(str == null) throw new Exception("");
char[] c = str.toCharArray();
int words = 0;
boolean wordflag = false;
for(int i=0;i<c.length;i++){
if((c[i]>='a' && c[i] <= 'z') || (c[i] >= 'A' && c[i] <= 'Z')){
if(wordflag) {
continue;
}
wordflag = true;
}else{
wordflag = false;
if((c[i] != ' ') ||
(((c[i]>='z') || (c[i] <= 'A')) &&
(c[i])<90 || c[i]>96))
words++;
}
}
System.out.println("words= " + words);
}
如果要处理连续空格,方法自己想去,别太懒了。
想要牛逼的方法,我不会~~~
http://jlp.yahooapis.jp/MAService/V1/parse?appid=CWPH3uGxg64nK4oPp3OhigfrFCfNtNtNg4dtax7_OTvgflVc03RW4ODuxjCoY6KQ6g--&results=ma,uniq&filter=1|2|3|4|5|6|7|8|9|10|12&sentence=海外引越し、Copyright Art Corporation你们看一下这个链接,就知道了
“海外引越し、Copyright Art Corporation”返回8 不对吗?
像你在14楼的那个字符串,用这个方法跑返回的就是7呀,不对吗?你那个连接我打不开
str.charAt(i);
用正则匹配 是中文加1;英文之后是空格 加1;
是英文返回一个boolean值
是空格返回一个boolean值
如果两个都是True
并且是连续的输出i;
思路可否??
int 字数 = 0;
str.charAt(i);
用正则匹配 是中文加1;英文之后不是英文 加1;
(是英文返回一个boolean值
不是英文返回一个boolean值
如果两个boolean不一致
并且是连续的)输出i;
思路可否??
public class Test
{
public static void main(String[] args)
{
char ch; //每一个单独的char
//原始文本
String str = "海外引越し、Copyright Art Corporation";
//单词的临时变量
boolean wordBegin=false;
//汉字个数
int numChi=0;
//单词个数
int numEng=0;
//其他符号
int numCha=0;
for(int i=0;i<str.length();i++)
{
ch=str.charAt(i);
if(Character.isSpaceChar(ch)) //空白符
{
if(wordBegin)
{
numEng++; //单词
wordBegin=false;
}
continue;
}
else if(ch>=19968&&ch<=64041)
{
numChi++; //汉字
continue;
}
else if((ch>=65&&ch<=90)||(ch>=97&&ch<=122))
{
wordBegin=true;
}
else
{
numCha++; //其他符号
}
}
if(wordBegin)
{
numEng++;
}
System.out.println("汉字个数:"+numChi);
System.out.println("单词个数:"+numEng);
System.out.println("其他符号:"+numCha);
}
}汉字个数:4
单词个数:3
其他符号:2
一个几万字的小说你试一下的话发现只有几千汉字,每个字出现的频率也相差很大,不要认为这些功能复杂,顶天了500行之内全搞定
import java.util.regex.*;public class WordCount {
public static final String PATTERN_STR = "[\\u4E00-\\u9FFF]|(\\b\\w+\\b)";
public static void main(String[] args) {
if (args.length > 0) {
Pattern p = Pattern.compile(PATTERN_STR);
Matcher m = p.matcher(args[0]);
int i = 0;
for (; m.find(); i ++)
System.out.println(m.toMatchResult());
System.out.println(i);
}
}
}