首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >C#:string.Trim()不移除空白

C#:string.Trim()不移除空白
EN

Stack Overflow用户
提问于 2015-07-30 20:47:51
回答 3查看 1.7K关注 0票数 0

我有一个提示,要求用户输入日期(以特定格式)。然后我修剪字符串,但是如果当我在提示符框中点击'Enter‘时有一个额外的空格,那么这个字符串在修剪后仍然会有一个额外的空间。我也会发我的提示框代码。我的字符串是:2015年7月29日1:32:01下午PDT和7月30日12:34:27

代码语言:javascript
复制
    string afterpromptvalue = Prompt.ShowDialog("Enter earliest Date and Time", "Unshipped Orders");
                    afterpromptvalue.Trim();
                    string beforepromptvalue = Prompt.ShowDialog("Enter latest Date and Time", "Unshipped Orders");
                    beforepromptvalue.Trim();

 string format = "MMM dd, yyyy h:mm:ss tt PDT";

            CultureInfo provider = CultureInfo.InvariantCulture;

            afterpromptvalue.Trim();
            beforepromptvalue.Trim();


            DateTime createdAfter = DateTime.ParseExact(afterpromptvalue, format, provider);



            DateTime createdBefore = DateTime.ParseExact(beforepromptvalue, format, provider);

public static class Prompt
{
    public static string ShowDialog(string text, string caption)
    {
        Form prompt = new Form();
        prompt.Width = 500;
        prompt.Height = 150;
        prompt.FormBorderStyle = FormBorderStyle.FixedDialog;
        prompt.Text = caption;
        prompt.StartPosition = FormStartPosition.CenterScreen;
        Label textLabel = new Label() { Left = 50, Top=20, Text=text };
        TextBox textBox = new TextBox() { Left = 50, Top=50, Width=400 };
        Button confirmation = new Button() { Text = "Ok", Left=350, Width=100, Top=70, DialogResult = DialogResult.OK };
        confirmation.Click += (sender, e) => { prompt.Close(); };
        prompt.Controls.Add(textBox);
        prompt.Controls.Add(confirmation);
        prompt.Controls.Add(textLabel);
        prompt.AcceptButton = confirmation;

        return prompt.ShowDialog() == DialogResult.OK ? textBox.Text : "";
    }
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-07-30 20:50:45

string.Trim返回一个新字符串。它不更新现有变量。

字符串是不可变的--在创建对象后不能更改字符串对象的内容。

https://msdn.microsoft.com/en-us/library/362314fe.aspx

代码的正确语法是:

afterpromptvalue = afterpromptvalue.Trim();

票数 12
EN

Stack Overflow用户

发布于 2015-07-30 20:51:21

调用string ()不会改变字符串本身。它返回修整的字符串

在C#中,字符串是不可更改的。对字符串所能做的就是将一个新字符串分配给它,调用字符串上的方法不能更改原始字符串,除非您将返回值分配给所讨论的string对象。

例如,更改:

代码语言:javascript
复制
afterpromptvalue.Trim();

至:

代码语言:javascript
复制
afterpromptvalue = afterpromptvalue.Trim();
票数 2
EN

Stack Overflow用户

发布于 2015-07-30 20:51:34

也许你应该试试这个;)

代码语言:javascript
复制
afterpromptvalue = afterpromptvalue.Trim();
beforepromptvalue = beforepromptvalue.Trim();

并阅读以下内容:

https://msdn.microsoft.com/en-gb/library/d4tt83f9(v=VS.110).aspx

也许这里的这句话对你来说很有趣

不变性与StringBuilder类 字符串对象称为不可变(只读),因为它的值在创建后不能修改。似乎修改字符串对象的方法实际上返回包含修改的新字符串对象。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31733720

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档