黑马程序员技术交流社区

标题: 关于字符串String类实现方法的一点小疑问 [打印本页]

作者: 岳民喜    时间: 2012-3-30 12:33
标题: 关于字符串String类实现方法的一点小疑问
本帖最后由 岳民喜 于 2012-3-30 12:38 编辑

在看视频的时候 ,在讲字符串String类 里面的方法中有一方法是:String substring(int beginIndex, int endIndex) 返回一个新字符串,它是此字符串的一个子字符串。

String s = "abcdef";
sop(s.substring(2,4));//包含头,不包含尾。s.substring(0,s.length());

//运行结果是cd


毕老师的例子中建立了一个 对象 String s = "zhagnsa,lisi,wangwu"; 说如果要提取zhangsan名字,可以sop(s.substring(0,','));提取lisi名字,可以从第一个','开始到下一','
代码sop(s.substring(',',',')), 在这个例子中时可以的实现的

问题:

如果我建立的对象不止3个名字,如String s = "zhagnsa,lisi,wangwu,jialiu,zhenqi,heiba,baijiu"  ,那我怎么提取zhenqi的名字,因为它也是两个','之间,
如果还是这个代码sop(s.substring(',',','))肯定不行,得指定是第几个逗号到第几个逗号之间的内容吧,那这第几个的代码怎么写?(有点钻牛角尖,这种方法显然比较低效,
还要去数是第几个逗号,呵呵,肯定有其他容易又简单的方法,我只是想知道这种方法能不能实现提取我想要的名字,多谢大虾们指点!)

另外:都还有些什么方法能实现名字全部提取呢?





作者: 郑洋洋    时间: 2012-3-30 12:43
你把逗号当成一个字符就行,知道substring方法,包含头不包含尾就行
另外,你的s.substring(0,s.length());也是错误的写法,字符串长度是s.length(),你的最大索引是s.length()-1
作者: izwj    时间: 2012-3-30 12:46
//这种方法可以去到zhenqi
class Test
{
        public static void main(String[] args)
        {
                String s = "zhagnsa,lisi,wangwu,jialiu,zhenqi,heiba,baijiu";
                String[] str=s.split(",");
                for(int i=0;i<str.length;i++)
                {
                        if("zhenqi".equals(str[i]))
                        System.out.println(str[i]);
                }
        }
}
作者: 秦超    时间: 2012-3-30 12:49
我这里想到一个方法,可能不是最简单的,但是思路很简单
可以先通过“,”来拆分字符串,然后遍历新的字符串数组,遍历到你要找的名字的时候,就提取出来
String s = "zhagnsa,lisi,wangwu,jialiu,zhenqi,heiba,baijiu"
String [] str=s.split(','); //通过逗号来拆分字符串
for(int i=0;i<str.length;i++)
{
   if(str[i].equals("zhenqi"))
      return str[i];
}
作者: 何万县    时间: 2012-3-30 12:51
通过String的spit方法,把字符串分成字符串数组,分离的规则是逗号!
再比较数组中元素和zhengqi是否相等!如楼上的代码!
class Test
{
         public static void main(String[] args)
        {
                 String s = "zhagnsa,lisi,wangwu,jialiu,zhenqi,heiba,baijiu";
                 String[] str=s.split(",");
                 for(int i=0;i<str.length;i++)
                 {
                         if("zhenqi".equals(str[i]))
                         System.out.println(str[i]);
                 }
         }
}
作者: 李井山    时间: 2012-3-30 12:51
split方法是切割文件的,如String s = "zhagnsa,lisi,wangwu,jialiu,zhenqi,heiba,baijiu" 可以就可以用","切割文件,split方法很方便和substring方法
配合使用,就能满足很多问题了。
作者: newlaw2013    时间: 2012-3-30 13:11
1.如是单纯的想的到特定名字的提取下面的代码可以实现:
String s = "zhagnsa,lisi,wangwu,jialiu,zhenqi,heiba,baijiu";
int startIndex = s.indexOf("zhenqi");
int endIndex =  s.indexOf(",", startIndex);
System.out.println(s.substring(startIndex, endIndex));
2.提取全部
String[] str=s.split(",");





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2