【问题标题】:How to count the delimiters in a string?如何计算字符串中的分隔符?
【发布时间】:2012-07-29 13:43:51
【问题描述】:

我有一个问题...有点基本,但我想我可以向你们寻求帮助

我正在加密一个文件,我加密的信息是

LoginTxtBox.Text + "/" + PwdTxtBox.Text + "/" + InstNameTextBox.Text + "/" + DBNameTxtBox.Text;

当我解密时……我在做:

StringBuilder sClearText = new StringBuilder();
encryptor.Decrypt(sPrivateKeyFile, sDataFile, sClearText);

//username/password
string s = sClearText.ToString();
string[] split = s.Split(new Char[] { '/' });
if (split.Length == 4)
{
    split0 = split[0];
    split1 = split[1];
    split2 = split[1];
    split3 = split[1];

现在我得到的要求是我需要以字符串的解密格式计算分隔符,如果有超过 2 个分隔符,那么它不是一个新应用程序。如果只有一个分隔符,那么它是一个从未使用过的应用程序。我不知道如何计算解密字符串中的分隔符......请帮帮我

【问题讨论】:

  • 您显示的代码隐含地知道分隔符的数量,不是吗? (split.Length - 1) ;)
  • 旁注:使用几乎任何可打印的字符来分隔用户输入的字符串是个坏主意。请考虑适当的序列化以避免各种注入问题(即密码“a/b”对您的系统来说非常棒)。
  • @Dan 是的!寻找更多方法来做到这一点 Regex.Matches(s, "/" ).Count 。这非常有效。谢谢你的时间:)
  • @AlexeiLevenkov 是的先生。谢谢您的建议 :)
  • @user1410658:还请阅读this previous question about storing encrypted passwords 的答案。基本上,即使您正在加密密码,除非您使用加密强度高的单向哈希算法,否则您做错了。

标签: c#


【解决方案1】:

试试这段代码

Regex.Matches( s,  "/" ).Count

【讨论】:

  • 工作完美!!谢谢你的朋友:)
  • 我很乐意帮助你 user1410658
【解决方案2】:

更多方法:

int delimiters = input.Count(x => x == '/');

-或-

int delimiters = input.split('/').Length - 1;

【讨论】:

    【解决方案3】:

    你不能在字符分隔符上拆分字符串,结果数组应该比分隔符的数量多一个吗?

    【讨论】:

    • 是的!我想尝试一下,但后来想到知道做这些事情的不同方法 Regex.Matches(s, "/" ).Count) 工作得很好。谢谢你的时间:)
    猜你喜欢
    • 1970-01-01
    • 2022-10-24
    • 2015-07-19
    • 2012-05-14
    • 2020-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-21
    相关资源
    最近更新 更多