首页 新闻 会员 周边

一段文字,不用string的内部方法,怎么样能获得里面“。”个数呢

0
悬赏园豆:30 [已解决问题] 解决于 2012-08-15 17:37

一段文字,比如string a="的说法,dfas。艾丝凡aaf。阿萨德发的飞洒。";现在要求不用string的任何内部方法(属性可以用),比如indexof,substring什么的,怎么样能获得里面“。”用了多少次,求返回句号的个数

懒胖gg的主页 懒胖gg | 初学一级 | 园豆:144
提问于:2012-08-15 11:23
< >
分享
最佳答案
0
public int Test(string s, char c) {
    int result = 0;
    for (int x = 0; x < s.Length; x++) {
        if (s[x] == c) {
            result++;
        }
    }
    return result;
}
收获园豆:20
I,Robot | 大侠五级 |园豆:9783 | 2012-08-15 11:53
其他回答(7)
1
string a = "的说法,dfas。艾丝凡aaf。阿萨德发的飞洒。";
Regex dot = new Regex(@"", RegexOptions.Multiline);
Console.WriteLine(dot.Matches(a).Count);

输出3

收获园豆:10
artwl | 园豆:16736 (专家六级) | 2012-08-15 11:38
0

String就只有一个Length属性,只用属性的话怎么可能做到!

zhangweiwen | 园豆:904 (小虾三级) | 2012-08-15 11:41

他没说不准用其他类的方法

支持(0) 反对(0) 水牛刀刀 | 园豆:6350 (大侠五级) | 2012-08-15 12:45
0

可以用 char 来判断,也可以用 Encoding 获取 byte[] 来判断。

Launcher | 园豆:45045 (高人七级) | 2012-08-15 11:49
0

string 转化为char[] 

或者用转化为string[] 再foreach(string a in str[])和char[]一个原理

仰望繁星的猪 | 园豆:514 (小虾三级) | 2012-08-15 12:35
0
var count = s.Count(c => c == '。');
//用的是Enumerable.Count方法,跟string没有关系
水牛刀刀 | 园豆:6350 (大侠五级) | 2012-08-15 12:44
0

unsafe

unsafe fixed(const wchar_t * p = s)
{
    int c = 0;
    while(*p)
    {
         if (*p==L'。') ++c;
         ++p;
    }
    return c;
}

语法不清楚,大概这么写。

Greatest | 园豆:678 (小虾三级) | 2012-08-15 15:17
0

用正则表达式的方法是效率最高的,如1楼~!

西夏普砖家 | 园豆:183 (初学一级) | 2012-08-15 15:55
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册