이와 같은 숫자 문자열이 2223,00
있습니다. 나는 그것을 2223
. 이것은 ” , ” 뒤에 정보가 없습니다 . ” , ” 뒤에 소수 두 자리 만 있다고 가정합니다 .
나는했다 :
str = str.Remove(str.Length - 3, 3);
더 우아한 해결책이 있습니까? 다른 기능을 사용할까요? -명시적인 숫자를 넣는 것을 좋아하지 않습니다-
답변
실제로 하나의 매개 변수를 사용하는 Remove 오버로드를 사용할 수 있습니다.
str = str.Remove(str.Length - 3);
그러나 길이를 하드 코딩하지 않으려면 다음을 사용할 수 있습니다.
str = str.Remove(str.IndexOf(','));
답변
아마도 이것은 :
str = str.Split(",").First();
답변
이것은 쉼표 뒤의 모든 것을 제외한 문자열을 반환합니다.
str = str.Substring(0, str.IndexOf(','));
물론 이것은 문자열에 실제로 소수점이있는 쉼표가 있다고 가정 합니다. 그렇지 않으면 위의 코드는 실패합니다. 더 많은 확인을 원합니다.
commaPos = str.IndexOf(',');
if(commaPos != -1)
str = str.Substring(0, commaPos)
나는 당신이 시작하는 문자열로 작업하고 있다고 가정하고 있습니다. 이상적으로는 float 또는 double과 같이 시작할 숫자로 작업하는 경우으로 캐스팅 int
한 다음 다음 myInt.ToString()
과 같이 할 수 있습니다.
myInt = (int)double.Parse(myString)
이것은 현재 문화를 사용하여 double을 구문 분석합니다 (여기서는 미국에서는 .
소수점으로 사용 ). 그러나 이것은 다시 입력 문자열을 구문 분석 할 수 있다고 가정합니다.
답변
String.Format("{0:0}", 123.4567); // "123"
초기 값이 10 진수 인 경우 문자열로 변환해야합니다.
String.Format("{0:0}", double.Parse("3.5", CultureInfo.InvariantCulture)) //3.5
이 예에서는 Invariant culture를 선택하지만 원하는 문화를 사용할 수 있습니다.
십진수에 앞으로 2 개 또는 3 개의 선행 숫자가 포함 될지 알 수 없기 때문에 서식 지정 기능을 사용하는 것을 선호합니다.
편집 :를 사용 Truncate
하여, 또는.
Console.WriteLine(Decimal.Truncate(Convert.ToDecimal("3,5")));
답변
사용하다:
public static class StringExtensions
{
/// <summary>
/// Cut End. "12".SubstringFromEnd(1) -> "1"
/// </summary>
public static string SubstringFromEnd(this string value, int startindex)
{
if (string.IsNullOrEmpty(value)) return value;
return value.Substring(0, value.Length - startindex);
}
}
두 가지 이유로 여기에서 확장 방법을 선호합니다.
- Substring으로 연결할 수 있습니다.
Example: f1.Substring(directorypathLength).SubstringFromEnd(1)
- 속도.
답변
LastIndexOf와 Substring을 결합하여 스팅 내에서 쉼표의 마지막 인덱스 왼쪽에있는 모든 문자를 가져올 수 있습니다.
string var = var.Substring (0, var.LastIndexOf ( ‘,’));
답변
사용할 수 있습니다 TrimEnd
. 효율적이고 깨끗해 보입니다.
"Name,".TrimEnd(',');