【问题标题】:Assigning a string variable that contains special characters to a string property looses special characters将包含特殊字符的字符串变量分配给字符串属性会丢失特殊字符
【发布时间】:2019-01-30 01:30:47
【问题描述】:

我有如下声明:

string city = HandleTypeString(address.City, tokenParams);
address.City =  city; //"_rv!9yfEEZy";

handleTypeString 返回带有随机特殊字符的字符串(_rv!9yfEEZy)。当我将值保存在city 变量中时,它包含handleTypeString 返回的所有内容,但是当我将它分配给address.city 时,它变成rv9yfEEZy 丢失特殊字符。我需要在属性中存储确切的值。如何在分配时保留原始值?

编辑: 我发现属性设置器正在删除这些特殊字符的问题。 公共字符串城市 { 得到 { 返回 this._City; } 设置 { this._City = value.RemoveDiacritics().RemoveSpecialCharacters(); } }

我的代码随机失败,因为加密值并非每次都包含特殊字符。感谢大家建议检查属性定义。

【问题讨论】:

  • 你能说明address.City 的作用以及它是如何在类中定义的吗?
  • 该类是在我的项目引用的程序集中定义的。它如下所示: [DataMember(EmitDefaultValue = false, Name = "City")] [XmlElement("City", Form = XmlSchemaForm.Unqualified)] public string City { get { return this._City; } 设置 { this._City = value.RemoveDiacritics().RemoveSpecialCharacters(); } }
  • 很确定问题出在 setter 中的 value.RemoveDiacritics().RemoveSpecialCharacters(); ...
  • 感谢您的帮助。我无法更改城市财产的定义方式。不幸的是,我仍然需要按原样存储原始值,因为该值是原始可读格式的加密值。我需要它从加密转换回原始值。
  • 如果你想“按原样”使用它,你需要将它转换成可以存储在那里的东西,比如 Base-32,然后在你读出来的​​时候再转换回来.

标签: c# string symbols


【解决方案1】:

address.City 修改 setter 或 getter 中提供的值。例如:

private string city;
public string City
{
    get { return city; }
    set { city = RemoveSpecialCharacters(value); }
}

或

private string city;
public string City
{
    get { return RemoveSpecialCharacters(city); }
    set { city = value; }
}

【讨论】:

    猜你喜欢
    • 2020-12-25
    • 2020-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-08
    相关资源
    最近更新 更多