Ankieta - Jakbyście nazwali funkcję do wyszukiwania pozycji stringa w innym stringu?

1

Szukamy stringa w innym stringu, taki haystack/needle. I chcemy teraz mieć funkcję która nam zwróci pozycję mniejszego wewnątrz dużego stringa, zarówno pozycję początkową jak i końcową.

Można definiować tak że pozycja końcowa to jest zawsze początkowa + długość podstringa.

0

Prosze: https://www.w3schools.com/jsref/jsref_indexof.asp

Majac pozycje poczatkowa mozesz latwo policzyc koniec (start+dlugosc-1).

0

Zostawiam indexOf i dorzucam rightIndexOf lub endIndexOf

1

A czemu nie zrobić funkcji która zwraca jakiś obiekt Substring który ma start i end? Co do samej funkcji to obawiam się że ma prostej odpowiedzi bo różne języki nazywają tą operacje różnie - (r)find, indexOf, strstr...

0
Shalom napisał(a):

A czemu nie zrobić funkcji która zwraca jakiś obiekt Substring który ma start i end?

No dokładnie tak zrobiłem.

Funkcja, getter, atrubut, property zwał jak zwał, idea taka sama.

PS: Może w sumie powinienem był to nazwać "metoda". Mea culpa.

Co do samej funkcji to obawiam się że ma prostej odpowiedzi bo różne języki nazywają tą operacje różnie - (r)find, indexOf, strstr...

Noi tak też pomyślałem, stąd ta ankieta.

0

W C++ dałbym begin() i end(), pytanie po co ten end(), skoro jest to begin() + size?

0

+1 Jedna metoda, ktora zwraca obiekt z 2 polami jak zaproponowal @Shalom

0
Charles_Ray napisał(a):

+1 Jedna metoda, ktora zwraca obiekt z 2 polami jak zaproponowal @Shalom

Przecież to jest dokładnie to samo pytanie -.-

Jakbys nazwał te dwa pola? Start/end? Offset/tail? Being/end?

Tak czy tak potrzebuje dwóch nazw, nie ważne czy funkcji, atrybutów czy getterów.

2

W Haskellu nazywa się indices i zwraca listę pozycji początkowych :

indices
Source
:: Text	-- Substring to search for (needle)
-> Text	-- Text to search in (haystack)
-> [Int]

takiej żeby też były pozycje końców jakoś nikt nie wymyślił

BTW tail() IMHO to bardzo zły wybór bo w moim spaczonym umysle kojarzy sie już tylko z listą, albo czymś listopodobnym. W FP lista składa się z pierwszego elementu (co zwraca head) oraz reszty listy (co zwraca tail)

0
KamilAdam napisał(a):

W Haskellu nazywa się indices i zwraca listę pozycji początkowych :

indices
Source
:: Text	-- Substring to search for (needle)
-> Text	-- Text to search in (haystack)
-> [Int]

takiej żeby też były pozycje końców jakoś nikt nie wymyślił

BTW tail() IMHO to bardzo zły wybór bo w moim spaczonym umysle kojarzy sie już tylko z listą, albo czymś listopodobnym. W FP lista składa się z pierwszego elementu (co zwraca head) oraz reszty listy (co zwraca tail)

Dzięki za pomysł z indices, ale u mnie to muszą być dwie osobne rzeczy, w 99% przypadkach będę używał albo jednego albo drugiego, nigdy obu na raz.

0

https://github.com/dotnet/roslyn/blob/main/src/Compilers/Core/Portable/Text/TextSpan.cs

public readonly struct TextSpan : IEquatable<TextSpan>, IComparable<TextSpan>
{
	/// <summary>
	/// Creates a TextSpan instance beginning with the position Start and having the Length
	/// specified with <paramref name="length" />.
	/// </summary>
	public TextSpan(int start, int length)
	{
		if (start < 0)
		{
			throw new ArgumentOutOfRangeException(nameof(start));
		}

		if (start + length < start)
		{
			throw new ArgumentOutOfRangeException(nameof(length));
		}

		Start = start;
		Length = length;
	}

	/// <summary>
	/// Start point of the span.
	/// </summary>
	[DataMember(Order = 0)]
	public int Start { get; }

	/// <summary>
	/// End of the span.
	/// </summary>
	public int End => Start + Length;

	/// <summary>
	/// Length of the span.
	/// </summary>
	[DataMember(Order = 1)]
	public int Length { get; }

	/// <summary>
	/// Determines whether or not the span is empty.
	/// </summary>
	public bool IsEmpty => this.Length == 0;
    ...
0

Dlatego że klasa ma wspierać różne kodowania, w których długość, a więc i początke i koniec stringa, ma różną ilość bajtów w długosci; więc postanowiłem dostarczyć klientowi dwie funkcje. Tak czy tak; nie to czy mają być dwie funkcje czy jedna jest tematem ankiety, tylko jak się powinny nazywać. — TomRiddle 2022-03-06 16:58

Ja bym najpierw wyraziście zdefiniował, w jakiej dziedzinie (dziedzinie w sensie matematycznym) te operacje. W znakach (jakich: unicode, multibyte), bajtach itd.
W związku z tym bym w nazwach metod przypomniał o co kaman: StartByte albo StartChar itd...

0
ZrobieDobrze napisał(a):

Dlatego że klasa ma wspierać różne kodowania, w których długość, a więc i początke i koniec stringa, ma różną ilość bajtów w długosci; więc postanowiłem dostarczyć klientowi dwie funkcje. Tak czy tak; nie to czy mają być dwie funkcje czy jedna jest tematem ankiety, tylko jak się powinny nazywać. — TomRiddle 2022-03-06 16:58

Ja bym najpierw wyraziście zdefiniował, w jakiej dziedzinie (dziedzinie w sensie matematycznym) te operacje. W znakach (jakich: unicode, multibyte), bajtach itd.
W związku z tym bym w nazwach metod przypomniał o co kaman: StartByte albo StartChar itd...

Wymyślę to później, na razie możesz założyć że to będzie Byte. Zagłouj więc w ankiecie Start/End dla StartByte/EndByte, lub ByteOffset/ByteTail.

Na prawdę; w tej ankiecie nie chodzi o pomoc zimplementacją, kompozycją lub interfejsem.

Chodzi tylko o wasze opinie nt nazwy dwóch określeń na pozycję stringa.

1 użytkowników online, w tym zalogowanych: 0, gości: 1