2011-11-11 29 views

回答

166

實際上,你可以只使用Remove重載需要一個參數:

str = str.Remove(str.Length - 3); 

但是,如果你想避免硬編碼的長度,你可以使用:

str = str.Remove(str.IndexOf(',')); 
+0

我收到了很多很好的答案。但就雅緻而言,這是我將要使用的一個。儘管如此,我不知道哪一個更有效率。所以,讓你的選擇! – Kani

+6

第二種解決方案更易於閱讀,理解和維護,並且**低水平**性能方面的差異非常微不足道。 如果你知道'''總是在-3位置,那麼第一個解決方案仍然可以,但是*過早優化*是浪費你的時間的可怕的事情。 –

+2

@Kani首先是最高效的 - 但我完全同意斯科特。我總是會選擇第二個,除非我在分析後知道有一個表演。瓶頸在這裏。這些(以及大多數其他答案)都將非常快 - 幾乎適用於所有目的。 –

4
String.Format("{0:0}", 123.4567);  // "123" 

如果您的初始值是十進制轉換爲字符串,你將需要轉換

String.Format("{0:0}", double.Parse("3.5", CultureInfo.InvariantCulture)) //3.5 

在這個例子中,我選擇不變的文化,但你可以使用你想要的。

我更喜歡使用格式化函數,因爲您不知道未來是否小數可能包含2或3前導數字。

編輯:您還可以使用Truncate刪除所有後面的或。

Console.WriteLine(Decimal.Truncate(Convert.ToDecimal("3,5"))); 
+0

嗯,在這種情況下,我會得到相同的數字,在它上面加上**昏迷**。 – Kani

+0

什麼是您使用的確切字符串以及您的計算機是什麼文化? –

+0

像這樣的例子:** dddd,dd **,其中** d **是一個數字。小數點位於**,**之後。我正在標準化一些結果,刪除**。**和**,**,或使用**。**而不是**,** – Kani

14

也許這樣的:

str = str.Split(",").First(); 
+5

甚至'str.Split(「,」)[0]' – BoltClock

+0

我認爲這是答案中「最優雅的」 - 至少目前爲止。 –

+1

@ ReedCopsey是什麼?我認爲是非常好的一個。 – Kani

6

這將返回到您的逗號

str = str.Substring(0, str.IndexOf(',')); 

當然後排除一切字符串,這假設您的字符串實際上有一個逗號小數點。如果沒有,上面的代碼將會失敗。你想要做更多的檢查:

commaPos = str.IndexOf(','); 
if(commaPos != -1) 
    str = str.Substring(0, commaPos) 

我假設你正在使用一個字符串開始。理想情況下,如果你有一些工作開始說起,就像一個浮動或雙,你可以只將其轉換爲int,然後做myInt.ToString(),如:

myInt = (int)double.Parse(myString) 

這解析雙重使用當前區域性(這裏在美國,我們使用.作爲小數點)。但是,這又假定您的輸入字符串可以被解析。

1

你可以使用TrimEnd。它的效率也很高,看起來很乾淨。

"Name,".TrimEnd(','); 
+4

這隻會刪除字符串末尾的任何','字符。由於字符串「123,45」以數字結尾,「123,45」.TrimEnd(',')'將返回「123,45」。 – phoog

+0

是的,實際上,在這裏沒有工作:/ – Kani

+0

@phoog你是對的 –

-2

使用lastIndexOf。像:

string var = var.lastIndexOf(','); 
1

用途:

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); 
    } 
} 

我更喜歡這裏的擴展方法有兩個原因:

  1. 我可以用子串IT連鎖。 Example: f1.Substring(directorypathLength).SubstringFromEnd(1)
  2. 速度。
0

請嘗試以下操作。它的工作對我來說:

str = str.Split(',').Last(); 
1

你可以使用LastIndexOf和子字符串相結合,讓所有字符的刺痛中逗號的最後一個索引的左側。

string var = var.Substring(0,var.LastIndexOf(','));

相關問題