В Java все находится в форме класса.
Если вы хотите использовать любой объект, тогда у вас есть две фазы:
Пример:
Object a;
a=new Object();
То же самое для концепции массива
Item i[]=new Item[5];
i[0]=new Item();
Если вы не дают секцию инициализации, тогда возникает NullpointerException
.
string ReplaceFirst(string text, string search, string replace)
{
int pos = text.IndexOf(search);
if (pos < 0)
{
return text;
}
return text.Substring(0, pos) + replace + text.Substring(pos + search.Length);
}
Пример:
string str = "The brown brown fox jumps over the lazy dog";
str = ReplaceFirst(str, "brown", "quick");
РЕДАКТИРОВАНИЕ : Как @itsmatt упомянул , существует также Regex. Замена (Строка, Строка, Int32), который может сделать то же, но является, вероятно, более дорогим во времени выполнения, так как это использует полнофункциональный синтаксический анализатор, где мой метод, каждый находит и три конкатенации строк.
EDIT2: Если это - общая задача, Вы могли бы хотеть сделать метод дополнительным методом:
public static class StringExtension
{
public static string ReplaceFirst(this string text, string search, string replace)
{
// ...same as above...
}
}
Используя вышеупомянутый пример теперь возможно записать:
str = str.ReplaceFirst("brown", "quick");
И потому что существует также VB.NET для рассмотрения, я хотел бы предложить:
Private Function ReplaceFirst(ByVal text As String, ByVal search As String, ByVal replace As String) As String
Dim pos As Integer = text.IndexOf(search)
If pos >= 0 Then
Return text.Substring(0, pos) + replace + text.Substring(pos + search.Length)
End If
Return text
End Function
Метод расширения C#, который сделает это:
public static class StringExt
{
public static string ReplaceFirstOccurrence(this string s, string oldValue, string newValue)
{
int i = s.IndexOf(oldValue);
return s.Remove(i, oldValue.Length).Insert(i, newValue);
}
}
Обладают
Как itsmatt сказал Regex. Замена является хорошим выбором для этого однако для создания его ответа больше завершенный, я заполню его с примером кода:
using System.Text.RegularExpressions;
...
Regex regex = new Regex("foo");
string result = regex.Replace("foo1 foo2 foo3 foo4", "bar", 1);
// result = "bar1 foo2 foo3 foo4"
третий параметр, набор к 1 в этом случае, является количеством случаев regex шаблона, который Вы хотите заменить во входной строке с начала строки.
я надеялся, что это могло быть сделано с помехами Regex. Замена перегрузка, но к сожалению кажется, что Вам нужен экземпляр Regex для выполнения его.
В синтаксисе C#:
int loc = original.IndexOf(oldValue);
if( loc < 0 ) {
return original;
}
return original.Remove(loc, oldValue.Length).Insert(loc, newValue);
using System.Text.RegularExpressions;
RegEx MyRegEx = new RegEx("F");
string result = MyRegex.Replace(InputString, "R", 1);
найдет первую F
в InputString
и заменит ее на R
.