当字符串达到特定长度时删除字符串中的字符
Remove characters in string when it reaches specific length
在我的应用程序中,我允许在输入数据库时字符串长度最多为 255 个字符。
我需要的是一个名为 "Name" 的字段,我输入的值类似于
Name = DisplayName + "_" + UniqueName;
我正在检查整个 "Name" 值是否大于 255,如果是,则需要单独从 DisplayName 中删除多余的字符。
类似 Name = "abcefghijklmnopqrstuvwxyz" + "_" + "zyxwvutsrqponmlkjihgfecba";
如果我有这样的字符串并且字符大于 255,(比如 270)
我需要从显示名称中删除 15 个字符。
如何在 C# 中实现这一点??
您可以使用 .Net framework for C# 中的 substring 函数,这样您就可以轻松获取 255 个字符的字符串。
示例:
if(str.Length > 255)
{
str = str.Substring(0, 255);
}
这个问题我有点不清楚。但是如果你想在设置它的值后从 Name
中删除额外的字符,你可以使用 String.Substring
Name = DisplayName + "_" + UniqueName;
Name = Name.Length()<=255 ? Name : Name.SubString(0,254);
假设 DisplayName
和 UniqueName
确保不包含您的分隔符“_”,您将不得不拆分字符串,修改(以前的)DisplayName 并重新连接它们:
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];
}
当然,所有这一切都假定此长度检查发生在之后 全名已被构造。您当然可以在 before 之前进行检查,省去拆分的工作:
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.
}
当然,这只是一个基本示例。真实代码还应该有:
- Variables/constants/configuration 指定最大长度,也可能是分隔符。
- 错误检查以确保 Split() returns 正好是两个部分,例如。
我做了一个扩展方法来做到这一点:
public static string RemoveExcessCharacters(this string value, int maxLen)
{
return (value.Length > maxLen) ? value.Substring(0, maxLen) : value;
}
像这样使用:
string value = "abcdefg".RemoveExcessCharacters(3);
Returns“abc”
在我的应用程序中,我允许在输入数据库时字符串长度最多为 255 个字符。
我需要的是一个名为 "Name" 的字段,我输入的值类似于
Name = DisplayName + "_" + UniqueName;
我正在检查整个 "Name" 值是否大于 255,如果是,则需要单独从 DisplayName 中删除多余的字符。
类似 Name = "abcefghijklmnopqrstuvwxyz" + "_" + "zyxwvutsrqponmlkjihgfecba";
如果我有这样的字符串并且字符大于 255,(比如 270) 我需要从显示名称中删除 15 个字符。
如何在 C# 中实现这一点??
您可以使用 .Net framework for C# 中的 substring 函数,这样您就可以轻松获取 255 个字符的字符串。
示例:
if(str.Length > 255)
{
str = str.Substring(0, 255);
}
这个问题我有点不清楚。但是如果你想在设置它的值后从 Name
中删除额外的字符,你可以使用 String.Substring
Name = DisplayName + "_" + UniqueName;
Name = Name.Length()<=255 ? Name : Name.SubString(0,254);
假设 DisplayName
和 UniqueName
确保不包含您的分隔符“_”,您将不得不拆分字符串,修改(以前的)DisplayName 并重新连接它们:
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];
}
当然,所有这一切都假定此长度检查发生在之后 全名已被构造。您当然可以在 before 之前进行检查,省去拆分的工作:
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.
}
当然,这只是一个基本示例。真实代码还应该有:
- Variables/constants/configuration 指定最大长度,也可能是分隔符。
- 错误检查以确保 Split() returns 正好是两个部分,例如。
我做了一个扩展方法来做到这一点:
public static string RemoveExcessCharacters(this string value, int maxLen)
{
return (value.Length > maxLen) ? value.Substring(0, maxLen) : value;
}
像这样使用:
string value = "abcdefg".RemoveExcessCharacters(3);
Returns“abc”