.Net 이전 vb left (string, length) 함수와 동일합니까?
.net이 아닌 프로그래머로서 이전 vb 함수에 해당하는 .net을 찾고 있습니다 left(string, length)
. 어떤 길이의 문자열에서도 작동한다는 점에서 게으르다. 예상대로 left("foobar", 3) = "foo"
가장 유용하게는 left("f", 3) = "f"
.
.net에서는 string.Substring(index, length)
범위를 벗어난 모든 항목에 대해 예외가 발생합니다. Java에서는 항상 Apache-Commons lang.StringUtils를 사용했습니다. Google에서는 문자열 함수를 많이 검색하지 않습니다.
편집하다:
@Noldorin- 와우, vb.net 확장에 감사드립니다! C #에서 동일한 작업을 수행하는 데 몇 초가 걸렸지 만 내 첫 만남 :
public static class Utils
{
public static string Left(this string str, int length)
{
return str.Substring(0, Math.Min(length, str.Length));
}
}
정적 클래스 및 메서드와 this
키워드를 확인합니다. 예, "foobar".Left(3)
. msdn의 C # 확장 도 참조하십시오 .
다음은 작업을 수행 할 확장 방법입니다.
<System.Runtime.CompilerServices.Extension()> _
Public Function Left(ByVal str As String, ByVal length As Integer) As String
Return str.Substring(0, Math.Min(str.Length, length))
End Function
Left
즉 , 이전 VB 함수 (예 Left("foobar", 3)
:) 또는 최신 VB.NET 구문을 사용하여 사용할 수 있습니다.
Dim foo = "f".Left(3) ' foo = "f"
Dim bar = "bar123".Left(3) ' bar = "bar"
또 다른 한 줄 옵션은 다음과 같습니다.
myString.Substring(0, Math.Min(length, myString.Length))
myString은 작업하려는 문자열입니다.
Microsoft.VisualBasic 라이브러리에 대한 참조를 추가하면 정확히 동일한 메서드 인 Strings.Left 를 사용할 수 있습니다 .
null 케이스를 잊지 마세요
public static string Left(this string str, int count)
{
if (string.IsNullOrEmpty(str) || count < 1)
return string.Empty;
else
return str.Substring(0,Math.Min(count, str.Length));
}
당신은 자신을 만들 수 있습니다
private string left(string inString, int inInt)
{
if (inInt > inString.Length)
inInt = inString.Length;
return inString.Substring(0, inInt);
}
편집 : 내 것은 C #에 있으며 vb에 대해 변경해야합니다.
using System;
public static class DataTypeExtensions
{
#region Methods
public static string Left(this string str, int length)
{
str = (str ?? string.Empty);
return str.Substring(0, Math.Min(length, str.Length));
}
public static string Right(this string str, int length)
{
str = (str ?? string.Empty);
return (str.Length >= length)
? str.Substring(str.Length - length, length)
: str;
}
#endregion
}
오류가 발생하지 않으면 null을 빈 문자열로 반환하고 잘린 값 또는 기본 값을 반환합니다. "testx".Left (4) 또는 str.Right (12);
You can either wrap the call to substring in a new function that tests the length of it as suggested in other answers (the right way) or use the Microsoft.VisualBasic namespace and use left directly (generally considered the wrong way!)
Another technique is to extend the string object by adding a Left() method.
Here is the source article on this technique:
http://msdn.microsoft.com/en-us/library/bb384936.aspx
Here is my implementation (in VB):
Module StringExtensions
<Extension()>
Public Function Left(ByVal aString As String, Length As Integer)
Return aString.Substring(0, Math.Min(aString.Length, Length))
End Function
End Module
Then put this at the top of any file in which you want to use the extension:
Imports MyProjectName.StringExtensions
Use it like this:
MyVar = MyString.Left(30)
I like doing something like this:
string s = "hello how are you";
s = s.PadRight(30).Substring(0,30).Trim(); //"hello how are you"
s = s.PadRight(3).Substring(0,3).Trim(); //"hel"
Though, if you want trailing or beginning spaces then you are out of luck.
I really like the use of Math.Min, it seems to be a better solution.
Just In Very Special Case:
If you are doing this left so then you will check the data with some partial string, for example: if(Strings.Left(str, 1)=="*") ...;
Then you can also use C# instance methods such as StartsWith
and EndsWith
to perform these tasks. if(str.StartsWith("*"))...;
If you want to avoid using an extension method and prevent an under-length error, try this
string partial_string = text.Substring(0, Math.Min(15, text.Length))
// example of 15 character max
참고URL : https://stackoverflow.com/questions/844059/net-equivalent-of-the-old-vb-leftstring-length-function
'code' 카테고리의 다른 글
C ++ 구문 "A :: B : A {};"는 무엇입니까? (0) | 2020.11.20 |
---|---|
VB.NET의 '그림자'대 '재정의' (0) | 2020.11.20 |
Visual Studio가 배치 파일에 잘못된 문자를 삽입합니다. (0) | 2020.11.20 |
Foundation Framework와 Core Foundation Framework의 차이점은 무엇입니까? (0) | 2020.11.20 |
mvc : favicon.ico도 컨트롤러를 찾습니까? (0) | 2020.11.20 |