我有这个字符串:
Hello my name is Marco
我想用Hello
替换第一个空格(my
和<br />
之间)。只有第一个。
在C#/ .NET 3.5上执行此操作的最佳方式是什么?
答案 0 :(得分:11)
public static class MyExtensions
{
public static string ReplaceFirstOccurrance(this string original, string oldValue, string newValue)
{
if (String.IsNullOrEmpty(original))
return String.Empty;
if (String.IsNullOrEmpty(oldValue))
return original;
if (String.IsNullOrEmpty(newValue))
newValue = String.Empty;
int loc = original.IndexOf(oldValue);
return original.Remove(loc, oldValue.Length).Insert(loc, newValue);
}
}
并使用它:
string str="Hello my name is Marco";
str.ReplaceFirstOccurrance("Hello", "<br/>");
str.ReplaceFirstOccurrance("my", "<br/>");
答案 1 :(得分:6)
无需添加子字符串,以下将仅查找第一个空格实例。 来自MSDN:
报告指定的第一次出现的从零开始的索引 在这个例子中的字符串。
string x = "Hello my name is Marco";
int index = x.IndexOf(" ");
x= index >=0 ? x.Insert(index, @"<br />") : x;
修改:如果您不确定是否会出现空间,则必须进行一些验证。我已经相应地编辑了答案。
答案 2 :(得分:3)
string tmp = "Hello my name is Marco";
int index = tmp.IndexOf(" ");
tmp = tmp.Substring(0, index) + "<br />" + tmp.Substring(index + 1);
答案 3 :(得分:1)
在这里,这将有效:
var s = "Hello my name is Marco";
var firstSpace = s.IndexOf(" ");
var replaced = s.Substring(0,firstSpace) + "<br/>" + s.Substring(firstSpace+1);
您可以将其转换为扩展方法:
public static string ReplaceFirst(this string input, string find, string replace){
var first= s.IndexOf(find);
return s.Substring(0,first) + replace + s.Substring(first+find.Length);
}
然后用法是
var s = "Hello my name is Marco";
var replaced = s.ReplaceFirst(" ","<br/>");
答案 4 :(得分:0)
string[] str = "Hello my name is Marco".Split(' ');
string newstr = str[0] + "<br /> " + string.Join(" ", str.Skip(1).ToArray());
答案 5 :(得分:0)
只需使用
Dim result As Double Dim oCmm As New Oracle.DataAccess.Client.OracleCommand("GetPhaDrugFranshiz") oCmm.Parameters.Add(cls_General.Create_Ora_Param("RET_VAL", ParameterDirection.ReturnValue, OracleDbType.Double)) oCmm.Parameters.Add(cls_General.Create_Ora_Param("v_patientid", ParameterDirection.Input, OracleDbType.Decimal, v_patientid.Length, v_patientid)) oCmm.Parameters.Add(cls_General.Create_Ora_Param("v_usercat", ParameterDirection.Input, OracleDbType.Char, v_usercat.Length, v_usercat)) oCmm.Parameters.Add(cls_General.Create_Ora_Param("v_cust_no", ParameterDirection.Input, OracleDbType.Char, v_cust_no.Length, v_cust_no)) oCmm.Parameters.Add(cls_General.Create_Ora_Param("v_dblinks_id", ParameterDirection.Input, OracleDbType.Decimal, v_dblinks_id.Length, v_dblinks_id)) oCmm.Parameters.Add(cls_General.Create_Ora_Param("v_cust_service_type", ParameterDirection.Input, OracleDbType.Char, cust_service_type.Length, cust_service_type)) oCmm.Parameters.Add(cls_General.Create_Ora_Param("v_drug_code", ParameterDirection.Input, OracleDbType.Char, 5, drugCode)) With oCmm .CommandType = CommandType.StoredProcedure .CommandTimeout = 90 .Connection = pCnn .Transaction = Tran .ExecuteNonQuery() result = Double.Parse(.Parameters.Item("RET_VAL").Value.ToString) End With Return result