当前页面: 开发资料首页 → J2SE 专题 → 字符串处理问题,高手指教!!在线等
字符串处理问题,高手指教!!在线等
摘要: 字符串处理问题,高手指教!!在线等
编一个函数,两个参数一个字符串,一个是要截取的字符串个数,按照数字对字符串的进行截取,
如: ABC汉.数字是3则输出ABC,如果是4则还是输出ABC,不能输出半个汉字.
输入四的话结果是:ABC汉!
狂晕!!!!!!!!!
好像问过一次了,没有解决么?
最后一个汉字容易解决,但如果中间有汉字呢?算几个?
在线等?
解决问题,等你给分。
private static String cut(String str, int len) {
String retstr = str.substring(0, len);
while(retstr.getBytes().length > len) {
retstr = retstr.substring(0, retstr.length() - 1);
}
return retstr;
}
楼主客气了。
没人啦?
一个可行的方法:
利用reaplaceAll方法,把字符串中的汉字全用空格替换。
然后取字符串长,在这里面把空格删除(如果不要空格的话)
是的,我问的就是中间有怎么办?
我已经有比较完美的解决办法,但为了防止不给分的情况发生,如下贴:
http://community.csdn.net/Expert/topic/5106/5106302.xml?temp=.2036707
请先给分,我再贴我的方法。如果方法无效、不好,我把分给回你。
强烈抗议赖分行为!
编号:243941 发送者:yyfeel 发送时间:2006-10-23 16:02:14 删除 回复
接受者:gzpoplar 重要性:重要性:1 非常不重要重要性:2 不重要重要性:3 一般重要性:4 重要重要性:5 非常重要
内容 能给多少给多少,还请赐教
编号:246630 发送者:gzpoplar 发送时间:2006-10-27 13:31:51 删除 回复
接受者:w5552 重要性:重要性:1 非常不重要重要性:2 不重要重要性:3 一般重要性:4 重要重要性:5 非常重要
内容 不给我分?
编号:244972 发送者:gzpoplar 发送时间:2006-10-25 12:25:43 删除 回复
接受者:yyfeel 重要性:重要性:1 非常不重要重要性:2 不重要重要性:3 一般重要性:4 重要重要性:5 非常重要
内容 Re:能给多少给多少,还请赐教
IP数据表增加2个字段:ipstartlong, ipendlong
略............................................
最好短期内不要公开,虽然比较滥,但很管用。
YidingHe(机枪兵)
你的只是能解决汉字在最后的情况!不能处理中间的情况!
1个汉字算2个长度?
这还是不太难的
用个比较土的办法是 先把string转化为byte 当然用gb2312了 这样汉字就是负的数了。当然汉字是两位,其他符号是一位,那么就在其他符号前加个(byte)i (i=128)
当你输入一个数时,加一倍,比如是5 那么就是10了。 这个时候你判断 如果在10时是负的,那么在真正取的时候就减1,那么就使4了,还有记的既然不要汉字,就不负数不输出。
比如字符串 "活动,123@A好"。你输入4时,就应该输出 ",1"。思路应该是正确的。
具体算法 楼主自己实现霸。我这个思路解决了oracle 中文显示问题!
(后记,如果输入的标点符号是中文的,上述情况下 输出 "1")
记得给分!!
点击"管理帖子" 在蓝色主题 右上方.然后给分巴
好吧我改了一下:
private static String cut(String str, int len) {
String retstr = str.substring(0, Math.min(len, str.length()));
while(retstr.getBytes().length > len) {
retstr = retstr.substring(0, retstr.length() - 1);
}
return retstr;
}
我的方法我试过的,我的结果是:
cut("中3国567", 4) = "中3" //“国”字算一半
cut("中3国567", 7) = "中3国56"
cut("中华人民234共和国", 5) = "中华" //“人”字算一半
如果不对的话,莫非楼主的真实意思是“只要解决汉字在最后的情况,不要处理中间的情况”?
是的,一个汉字是两个长度.
请问:Math.min(len, str.length()是什么意思?
gzpoplar(poplar)
等你的答案!!!