String name = request.getParameter("name");name值可能为a“北京 天安门”或者b“北京    天安门”或者c“从天安门到地安门”
1、如何判断name的值中有空格如a
2、如果有多个空格,只保留一个空格如b。
3、如何判断name值中有“从...到...”

解决方案 »

  1.   

    1.indexOf() 可以满足要求把
    2.可以判断一个空格,当然就可以判断多个空格了。
    3.这个难把,如果要求不是很高,也可以用1的办法处理。
      

  2.   

    楼主会用JAVA的正则表达式吗?
      

  3.   

    1:是否可以考虑使用String的contains方法判断a中的空格?
    2:可以结合1的方法使用String的replaceAll或replace方法替换多个空格,在
    这个操作之前可以使用String的indexOf方法定位空格的位置。
    3:方法同2类似。以上只是组合使用了API中的方法,使用正则表达式应该有更简洁的处理方式,只是
    需要一点时间研究一下,长时间没有,有些忘记了。
      

  4.   

    楼主不好意思呀.上面那个有问题.哈.给你测了一下能达到你的要求.你试试吧.行就请结贴,
    不行请马上提问
    import java.util.regex.*;
    import javax.swing.*;public class RegexTest
    {
    public static void main(String[]args)
    {
    Pattern pattern =null;
    String patternString = "[\\S]+[\\s]+[\\S]+|从[\\S]+到[\\S]+";
    String str ="我爱       北京";
    String str1 ="从兴县到太原";
    pattern = Pattern.compile(patternString);
    Matcher matcher = pattern.matcher(str);
    if (matcher.matches())
    {
    Pattern pattern1 = null;
    pattern1 = Pattern.compile("[\\s]+");
    Matcher matcher1 = pattern1.matcher(str);
    String output = matcher1.replaceAll(" ");
    System.out.println(output);
    }

    }
    }
      

  5.   

    问题一: Pattern p = Pattern.compile("\\S*\\p{Blank}*\\S*");
    Matcher m = p.matcher("a北京 天安门");
    boolean flag = m.matches();
    System.out.println(flag);
    问题二;
    Pattern p = Pattern.compile("[ ]{1,}");
    Matcher m = p.matcher("北京             天安");
    while(m.find()){
    System.out.println(m.replaceAll(" "));
    }
    问题三:
    Pattern p = Pattern.compile("从\\S*到\\S*");
    Matcher m = p.matcher("从北京到天安");
    while(m.find()){
    System.out.println(m.group());
    }