在我的应用程序中,我在进入数据库时允许字符串长度最多255个字符。
我需要的是我有一个名为“Name”的字段,我输入的值如
Name = DisplayName + "_" + UniqueName;
我正在检查整个“Name”值是否大于255,如果是这样,需要从DisplayName中删除多余的字符。
类似于Name = "abcefghijklmnopqrstuvwxyz" + "_" + "zyxwvutsrqponmlkjihgfecba";
如果我有这样的字符串,如果字符大于255,(比如270) 我需要从显示名称中删除15个字符。
如何在C#中实现这一点
答案 0 :(得分:3)
这个问题对我来说有点不清楚。但是,如果您想在设置其值后从Name
中删除多余字符,则可以使用String.Substring
Name = DisplayName + "_" + UniqueName;
Name = Name.Length()<=255 ? Name : Name.SubString(0,254);
答案 1 :(得分:3)
假设DisplayName
和UniqueName
确保不包含您的分隔符字符&#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.
}
当然,这只是一个基本示例。真正的代码也应该有:
答案 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;