我想通過確保顯示的第二個字符串出現在第一個字符串輸出的中間位置來將字符串對準另一個字符串。我該如何在C#中做這件事。在此先感謝將一個字符串與另一個字符串對齊
回答
你的問題有點不清楚(例子有助於澄清)。此外,你還沒有完全指定你期望的輸出(當第二個字符串不能居中在第一個字符串上,因爲它太長了嗎?)你會發現完全specifying your requirements將幫助你編寫代碼!這就是說,我認爲你正在尋找類似以下的東西。
使用
public static string CenterWithRespectTo(string s, string against) {
if(s == null) {
throw new ArgumentNullException("s");
}
if(against == null) {
throw new AgrumentNullException("against");
}
if (s.Length > against.Length) {
throw new InvalidOperationException();
}
int halfSpace = (against.Length - s.Length)/2;
return s.PadLeft(halfSpace + s.Length).PadRight(against.Length);
}
使
string s = "Hello";
string against = "My name is Slim Shady";
Console.WriteLine(CenterWithRespectTo(s, against) + "!");
Console.WriteLine(against);
產生
Hello !
My name is Slim Shady
(將多餘的 '!' 是爲了讓你能看到的填充。)
你可以很容易地修改這個在存在奇數額外空間的情況下,額外空間根據您的需要左右移動(目前它在右側)(重構接受參數!)。
這隻適用於非比例(固定寬度)字體。一般來說,對於所有字體......如果兩個字符串不對稱地填充了不同的寬度字符(第一個字符串具有寬字符的優先級(Ws,Ms,Hs等),並且第二個字符串具有窄字符的優勢,如i,l ,標點符號等),那麼這將不起作用。 – 2009-11-25 20:00:19
他說中心字符串,而不是字符串(文本)的中心視覺表示。 (我同意這樣一個明顯的陳述,即他的要求是模糊不清的。) – jason 2009-11-25 20:43:36
您的問題不清楚。也許.PadLeft
和.PadRight
方法會幫助你。
最簡單的解決方案是將字符串放入水平對齊的文本框中,並將它們的textalignment屬性設置爲「居中」。
否則,你需要衡量字符串的長度像素,在指定的字體繪製的時候......那麼抵銷了兩個長度之差的一半短字符串的開始x座標...
string s1 = "MyFirstString";
string s2 = "Another different string";
Font f1 = new Font("Arial", 12f);
Font f2 = new Font("Times New Roman", 14f);
Graphics g = CreateGraphics();
SizeF sizeString1 = g.MeasureString(s1, f1),
sizeString2 = g.MeasureString(s2, f2);
float offset = sizeString2.Width - sizeString1.Width/2;
// Then offset (to the Left) the position of the label
// containing the second string by this offset value...
// offset to the left, because If the second string is longer,
// offset will be positive.
Label lbl1 = // Label control for string 1,
lbl2 = // Label control for string 2;
lbl1.Text = s1;
lbl1.Font = f1;
lbl1.Left = //Some value;
lbl2.Text = s2;
lbl2.Font = f2;
lbl2.Left == lbl1.Left - offset;
這會將字符串(文本)的可視表示集中在一個窗口中,但不一定是他試圖解決的問題。 – jason 2009-11-25 20:43:06
- 1. 將一個字符串轉換爲另一個字符串
- 2. 將一個字符串到另一個字符串中的Java
- 3. 將字符串[index]與另一個字符串進行比較
- 4. 字符串與另一個字符串字符的比較
- 5. 串字符串與另一個字符串連接
- 6. C++將整個字符串拆分爲另一個字符串
- 7. 在另一個字符串中查找一個字符串的字符串
- 8. 用PHP匹配一個字符串到另一個字符串
- 9. 確定一個字符串是不是另一個字符串
- 10. 一個字符串查找是否有另一個字符串
- 11. 從另一個字符串中創建一個字符串?
- 12. C - 從另一個字符串中減去一個字符串
- 13. 算一個字符串另一個字符串
- 14. 前面加上一個字符串到另一個字符串
- 15. 一個字符串包含另一個字符串
- 16. 搜索一個字符串是否另一個字符串
- 17. 字符在C另一個字符串
- 18. 用字符串或另一個字符
- 19. 另一個字符串
- 20. 字符串除了與另一個字符串包含「+」
- 21. 比較與另一個字符串數組中的字符串
- 22. 將字符串插入另一個字符串,每N個字符
- 23. 將字符串分配給另一個字符串
- 24. 將字符串隨機插入另一個字符串
- 25. 如何將字符串附加到另一個字符串?
- 26. 將字符串插入另一個字符串
- 27. 如何將字符串插入另一個字符串?
- 28. 將字符串添加到另一個字符串中
- 29. C#將字符串放在另一個字符串之前
- 30. 將字符串拆分爲另一個字符串
這是控制檯輸出,WPF,還是什麼? – HackedByChinese 2009-11-25 19:22:32
您是在談論ASP.NET,控制檯還是Web窗體? – 2009-11-25 19:22:37
什麼......那個?是吧? – 2009-11-25 19:22:38