首页 新闻 会员 周边

在指定字符串前加入空格

0
悬赏园豆:5 [已解决问题] 解决于 2012-01-03 16:32

   我的问题:

我想得到Label1.text 等于TextBox1.text 的另一个版本,比如我在TextBox1输入:TestTitleReplace 然后
Label1.text = Test Title Replace
就是每个大小字母前面加上一个空格。
这个程序的结果跟我要的结果不一致。帮忙看一下咯。

 

这个是我尝试的结果,但是结果不是我所想得到的结果。帮忙查看问题出在哪里? 

 protected void Button1_Click(object sender, EventArgs e)
    { 
        string TotalName = TextBox1.Text;
       string[] ph = {"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z" };
        if (!string.IsNullOrEmpty(TotalName))
        {
            foreach (string p in ph)
            {
                if(TotalName.Contains(p))
                {
                string cast = TotalName.Insert(TotalName.IndexOf(p), "-");
                Label1.Text = cast;
                }
            }           
        }

doriska的主页 doriska | 初学一级 | 园豆:186
提问于:2011-12-24 09:56
< >
分享
最佳答案
0
string TotalName = textBox1.Text;
string[] ph = { "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z" };
if (!string.IsNullOrEmpty(TotalName))
{
foreach (string p in ph)
{
if (TotalName.Contains(p))
{
//下面这句话有2个问题,第一点:因为string是特殊的引用类型,它调用Insert方法就会重复copy生成一个新的字符串,而原字符串并没有被改变.
//也就是说你的示例中TotalName不会被改变,所以cast只会显示最后一次Insert以后的结果,理论上label1.Text应该最后会显示 "-TestTitleReplace"
//第二点,你"TotalName.IndexOf(p)"这样找大写字母的位置,其实就只是假设一个字母只会出现一次,没考虑到出现多次的情况.
string cast = TotalName.Insert(TotalName.IndexOf(p), "-");
label1.Text = cast;
}
}
}  

其实一句话就能解决的啦,给你个代码:

string TotalName = textBox1.Text;
string cast = System.Text.RegularExpressions.Regex.Replace(TotalName, @"([A-Z])", " $1", System.Text.RegularExpressions.RegexOptions.Compiled);
label1.Text = cast;
收获园豆:5
LCM | 大侠五级 |园豆:6876 | 2011-12-24 10:10

弓虽

胡屯 | 园豆:714 (小虾三级) | 2011-12-24 14:51

高手就是不一样,真的非常谢谢!

doriska | 园豆:186 (初学一级) | 2012-01-03 16:33
其他回答(2)
0

循环,判断,找出大写的位置,再在前面加空格。

悟行 | 园豆:12559 (专家六级) | 2011-12-24 10:20
0

用正则表达式的是正解

JRoger | 园豆:258 (菜鸟二级) | 2011-12-24 12:28
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册