För att inte få för mycket text, så försöker jag att konvertera ett VB-script till C#: kortare men inte lika lättläst...Avkorta text.
<code>
'vb-script
public static string ShortenTitle(object strText, int lngMaxLen)
{
string newString="";
if (strText.ToString().Length > lngMaxLen)
{
newString = strText.ToString().Substring(0, lngMaxLen)+"...";
}
else
{
newString = strText.ToString();
}
return newString;
}
</code>
..och så försöker jag så här:
<code>
public static string Shorten(string strText, int lngMaxLen)
{
int lngPos;
string sText;
if (strText.Length > lngMaxLen)
{
lngPos = strText.LastIndexOf(" ", lngMaxLen);
if (lngPos < Math.Round(lngMaxLen * 0.9))
{
lngPos = lngMaxLen + 1;
}
sText = strText.Substring(0, lngPos - 1) + "...";
}
else
{
sText = strText;
}
return sText;
}
</code>
<b>Probelm:</b>
Den räknar tecken inte mellanrumen. Jag villle att den inte skulle bryta i ett ord, utan mellan orden.
Tips tages imot med största tacksamhet.
[REDIGERAT]
Jag fick det att fungera så här:
<code>
if (sText.Length > lngMaxLen)
{
lngPos = sText.IndexOf(" ", lngMaxLen);
if (lngPos < Math.Round(lngMaxLen * 0.9, 3))
{
lngPos = lngMaxLen + 1;
}
nyText = sText.Substring(0, lngPos) + "...<p><p/>Läs vidare";
return sBild + sVirus + picReplace(nyText);
}
else
return sBild + sVirus + sText;
</code>Sv: Avkorta text.
<code>
string sText = "asdasda a asda sd asd aasdas da asd asda s ";
int maxlen = 15;
if (sText.Length > maxlen)
{
String nytext = sText.Substring(0, (sText.Substring(0, maxlen).LastIndexOf(" "))) + "...";
MessageBox.Show(nytext);
}
else
{
}
</code>