How to split by numbers inside the string?

Asked

Viewed 447 times

2

String following:

1No começo Deus criou os céus e a terra. 2A terra era um vazio, sem nenhum ser vivente, e estava coberta por um mar profundo. A escuridão cobria o mar, e o Espírito de Deus se movia por cima da água.
3Então Deus disse:
— Que haja luz!
E a luz começou a existir. 4Deus viu que a luz era boa e a separou da escuridão. 5Deus pôs na luz o nome de “dia” e na escuridão pôs o nome de “noite”. A noite passou, e veio a manhã. Esse foi o primeiro dia.
6Então Deus disse:
— Que haja no meio da água uma divisão para separá-la em duas partes!
7E assim aconteceu. Deus fez uma divisão que separou a água em duas partes: uma parte ficou do lado de baixo da divisão, e a outra parte ficou do lado de cima. 8Nessa divisão Deus pôs o nome de “céu”. A noite passou, e veio a manhã. Esse foi o segundo dia.
9Aí Deus disse:
— Que a água que está debaixo do céu se ajunte num só lugar a fim de que apareça a terra seca!
E assim aconteceu.

Or if you prefer Jsfiddle: https://jsfiddle.net/rtzf525j/1/

I want you to return something like this:

1 No começo Deus criou os céus e a terra.
2 A terra era um vazio, sem nenhum ser vivente, e estava coberta por um mar profundo. A escuridão cobria o mar, e o Espírito de Deus se movia por cima da água.
3 Então Deus disse: — Que haja luz! E a luz começou a existir.

How can I separate each verse ?

  • 2

    "string is int" would be integer values in the text? And there is the possibility of there being integer numbers within the verse other than the indication of the same: "Peter ate 3 oranges"?

  • Inside a separate string when it’s number. Now "Peter ate 3 oranges" got me .

  • That’s how it goes regex

  • So, thinking here, it will always be space after the first character?

  • That’s right @Luizsantos

  • and s string will always be such a list?

  • @Luizsantos.

  • 1

    I don’t know why "someone" was negative on my question.

Show 3 more comments

1 answer

3


From what I saw, each verse is immediately followed by letter, without another separator, certain?

You solve your problem in four steps:

  • Create a regular expression to find the number of each verse:
Regex r = new Regex("([0-9]+)[a-zA-Z]{0}"); // Pega o número completo "colado" a um texto
  • Replace all verse numbers with a separator that usually does not appear in the Bible:
string testamento = r.Replace(capitulo, "@");
  • Break the text as you normally would:
string[] versiculos = testamento.Split('@');
  • If you just wanted the Array with the verses, you can stop there - or insert (índice + 1) at the beginning of each Array element. But if you want to put everything back together in a single text, you can do the following:
testamento = ""; // já declarei o testamento lá em cima
for (int i = 0; i < versiculos.Length; i++)
{
    int numero = i + 1;
    testamento += numero.ToString() + " " + versiculos[i] + quebraDeLinha;
}

Epa, and this variable quebraDeLinha Where does it come from? You declare it before the bond, with the following considerations:

  • If it goes to a page you declare so:
string quebraDeLinha = "<br>"; // ou outra forma web de quebrar linha que lhe aprouver
  • If it’s for a desktop or mobile application, maybe it’s more interesting:
string quebraDeLinha = "\r\n";

Just one more thing: the Bible can be very big - maybe even every single will is too big for a single string. If the application crashes or gets too slow, I suggest studying the use of the class StringBuilder. It was created to deal with the creation and manipulation of very large texts.

  • Renan worked here, thanks !!! , Just a detail: exchange replace for Replace and split for Split.

  • @Matheusmiranda was worth the touch. I’m a Javascript chemist dependent, so sometimes I forget the pattern. NET is with the methods starting with XD models

Browser other questions tagged

You are not signed in. Login or sign up in order to post.