如何查找非字母字符的位置或单词匹配问题
如何查找非字母字符的位置或单词匹配问题
如:Monday Mondays Wednesday/Friday Tuesday,Wednesday
怎么找出 '/ '和 ', '的位置,字符串不是固定的,分隔符(非字母)也是不定的
目的就是想将: Monday替换成Mon,Tuesday替换成Tues,Wednesday替换成Wed,Friday 替换成Fri,但若出现类似Mondays,aMonday的不能替换掉,得精确匹配。
------解决方案--------------------顶,等高手
------解决方案--------------------估计得用正则,正则俺不会。
------解决方案--------------------String s = "Monday Mondays Wednesday/Friday Tuesday,Wednesday ";
找/或,的位置很简单,只要利用String的indexOf方法就可以,比如s.indexOf( ', '),返回值就是它在字符串中的位置,若返回-1,表示该串中不存在这个字符。
------解决方案--------------------正则表达式
具体请参考Java Doc文档
------解决方案--------------------如果非字母是分隔符的话 就将非字母替换成空格 然后拆解成数组最后在 进行其他操作
String s= "Monday Mondays Wednesday/Friday Tuesday,Wednesday ";
s=s.repalceAll( "\\W ", " ");
String s1=s.split( " ");
------解决方案--------------------自己在写一些日期简写操作的规则不就实现你的目地了
------解决方案-------------------- 回复人:brooksychen(初晨之阳) ( 二级(初级)) 信誉:100 2007-04-24 14:45:18 得分:0
?
String s = "Monday Mondays Wednesday/Friday Tuesday,Wednesday ";
找/或,的位置很简单,只要利用String的indexOf方法就可以,比如s.indexOf( ', '),返回值就是它在字符串中的位置,若返回-1,表示该串中不存在这个字符。
------------------------------
同意,
但楼主说 "字符串不是固定的,分隔符(非字母)也是不定的 "
应该是个字符的集合。这种方法工程量可能会变大。
------解决方案--------------------替换的话,正则我不太清楚,但对于String的replace方法虽然可以替换,但是不满足你的要求。
但我可以提供一个另外的思路:
1、把字符利用StringTokenizer类按照“ ”、“/”、“,”作为分隔符分成String数组(或者ArrayList),记为sa
2、替换前的字符串和替换后的字符串放在一个HashMap里,记为hm,比如Monday和Mon,Monday作为key,Mon作为Value
3、对于数组sa的每个元素sa[i],判断一下这个元素值是否在HashMap对象hm中有相应元素的key与之匹配,有的话就替换成对应的value
4、重复3的操作
5、把替换掉元素之后的sa拼起来,如果有必要的话
------解决方案--------------------To: john_sheep(彩虹勇士(楼主,没事就把贴子结了吧.))
抱歉,没看清楚。那这样的话,用正则表达式比较方便。包括我刚刚给出的思路也是一样。
------解决方案--------------------服务器上的JDK是1.3的,可以用正则吗
To:zhaochunhui(没有烟抽的日子@楼主你看,多么蓝的天,走过去你可以)
字符串不是日期来的,是任意的,上面的只是随便举个例子
如果非字母是分隔符的话 就将非字母替换成空格,那还原怎么办?
Monday Mondays Wednesday/Friday Tuesday,Wednesday
结果应该是Mon Mondays Wed/Fri Tue,Wed
------解决方案--------------------ding
------解决方案--------------------什么意思
Monday Mondays Wednesday/Friday Tuesday,Wednesday
这里的/和,还要用到吗?
可否把拆解的规律说一下 要是没有规律的话是不好弄的
------解决方案--------------------String s = "Monday Mondays Wednesday/Friday Tuesday,Wednesday ";
Pattern p = Pattern.compile( "[\\W&&\\S] ");
Matcher t = p.matcher(s);
while (t.find()) {
System.out.println(t.group()+ ": "+ t.start());//t.start();就是所在位置,从0开始计数
}
//找出非字母的位置
------解决方案--------------------服务器上的JDK是1.3的,可以用正则吗
-----------------------------------这个不能用正则了
/*
* 判断输入字符串是否字母
*/
public static boolean isLetter(char str){
String ase= "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ ";