Как отобразить сокращенные пути в.NET

Я столкнулся с этой проблемой сам, и а не добавьте Систему. Веб-блок к моему проекту, я записал класс для кодирования/декодирования URL (его довольно простое, и я сделал некоторое тестирование, но не много). Я включал исходный код ниже.: оставьте комментарий наверху при многократном использовании этого не обвиняйте меня, если он повреждается, извлеките уроки из кода.

''' <summary>
''' URL encoding class.  Note: use at your own risk.
''' Written by: Ian Hopkins (http://www.lucidhelix.com)
''' Date: 2008-Dec-23
''' </summary>
Public Class UrlHelper
    Public Shared Function Encode(ByVal str As String) As String
        Dim charClass = String.Format("0-9a-zA-Z{0}", Regex.Escape("-_.!~*'()"))
        Dim pattern = String.Format("[^{0}]", charClass)
        Dim evaluator As New MatchEvaluator(AddressOf EncodeEvaluator)

        ' replace the encoded characters
        Return Regex.Replace(str, pattern, evaluator)
    End Function

    Private Shared Function EncodeEvaluator(ByVal match As Match) As String
    ' Replace the " "s with "+"s
        If (match.Value = " ") Then
            Return "+"
        End If
        Return String.Format("%{0:X2}", Convert.ToInt32(match.Value.Chars(0)))
    End Function

    Public Shared Function Decode(ByVal str As String) As String
        Dim evaluator As New MatchEvaluator(AddressOf DecodeEvaluator)

        ' Replace the "+"s with " "s
        str = str.Replace("+"c, " "c)

        ' Replace the encoded characters
        Return Regex.Replace(str, "%[0-9a-zA-Z][0-9a-zA-Z]", evaluator)
    End Function

    Private Shared Function DecodeEvaluator(ByVal match As Match) As String
        Return "" + Convert.ToChar(Integer.Parse(match.Value.Substring(1), System.Globalization.NumberStyles.HexNumber))
    End Function
End Class
8
задан chuckhlogan 19 November 2009 в 15:42
поделиться

5 ответов

Вы думаете о StringTrimming.EllipsisPath константа перечисления, которая может использоваться с StringFormat до рисовать обрезанный путь с помощью Graphics.DrawString . Однако, .

1
ответ дан 5 December 2019 в 05:45
поделиться

Из этого сообщения в блоге Coding Horror о сокращении длинных путей к файлам есть вызов Windows API PathCompactPathEx , который вы можете использовать.

4
ответ дан 5 December 2019 в 05:45
поделиться

Я не знаю метода, чтобы сделать это автоматически, но вы легко можете создать метод, в котором iether использует Substring () и LastIndexOf ("\") или System.IO.Path. GetFileName (), чтобы получить только имя файла, а затем добавить точку.

0
ответ дан 5 December 2019 в 05:45
поделиться

Как насчет:

string longPath = @"c:\somewhere\myfile.txt";
string shortPath = @"..\" + Path.GetFileName(longPath);
0
ответ дан 5 December 2019 в 05:45
поделиться

Здесь я нашел простой в использовании класс, производный от TextBox: EllipsisTextBox , который инкапсулирует StringTrimming.EllipsisPath. У меня работает!

0
ответ дан 5 December 2019 в 05:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: