当字符串达到特定长度时删除它中的字符

时间:2016-01-11 04:42:14

标签: c# string string-length

在我的应用程序中,我在进入数据库时​​允许字符串长度最多255个字符。

我需要的是我有一个名为“Name”的字段,我输入的值如

Name = DisplayName + "_" + UniqueName;

我正在检查整个“Name”值是否大于255,如果是这样,需要从DisplayName中删除多余的字符。

类似于Name = "abcefghijklmnopqrstuvwxyz" + "_" + "zyxwvutsrqponmlkjihgfecba";

如果我有这样的字符串,如果字符大于255,(比如270) 我需要从显示名称中删除15个字符。

如何在C#中实现这一点

4 个答案:

答案 0 :(得分:3)

这个问题对我来说有点不清楚。但是,如果您想在设置其值后从Name中删除多余字符,则可以使用String.Substring

Name = DisplayName + "_" + UniqueName;
Name = Name.Length()<=255 ? Name : Name.SubString(0,254);

答案 1 :(得分:3)

假设DisplayNameUniqueName确保不包含您的分隔符字符&#34; _&#34;,则必须拆分字符串,修改(以前是)DisplayName和reconcat它们:

var displayName = "Shesha";
var uniqueName = "555";
var fullName = displayName + "_" + uniqueName;

if (fullName.Length > 255)
{
   var charsToRemove = fullName.Length - 255;

   // split on underscore.
   var nameParts = fullName.Split('_'); 

   var displayNameLength = nameParts[0].Length;
   var truncatedDisplayName = nameParts[0].Substring(0, displayNameLength - charsToRemove);
   fullName = truncatedDisplayName + "_" + nameParts[1];
}

当然,所有这些都假设在构造完全名之后发生了这种长度检查。您当然可以在之前检查,从而节省您自己的分裂工作:

var combinedLength = displayName.Length + uniqueName.Length + 1; // 1 for _.
var charsToRemove = combinedLength - 255;
if (charsToRemove > 0)
{
    // same logic as above, but instead of splitting the string, you have
    // the original parts already.
}

当然,这只是一个基本示例。真正的代码也应该有:

  1. 变量/常量/配置,以指定最大长度,也可以指定分隔符。
  2. 检查错误以确保Split()仅返回两个部分,例如。

答案 2 :(得分:1)

你可以利用.Net框架中提供的子串函数来实现C#,这样你就可以轻松地获取255个字符的字符串。

示例:

if(str.Length > 255)
{
  str = str.Substring(0, 255);
}

答案 3 :(得分:0)

我是一种扩展方法:

public static string RemoveExcessCharacters(this string value, int maxLen)
{
   return (value.Length > maxLen) ? value.Substring(0, maxLen) : value;
}

用过:

string value = "abcdefg".RemoveExcessCharacters(3);

返回&#34; abc&#34;