Цензорное слово из строки [дубликат]

Чтобы сгенерировать календарь в виде таблицы, вам нужно создать сетку строк из шести столбцов x 6, чтобы разрешить все возможные месяцы, поэтому цикл должен повторяться 42 раза (а не количество дней в месяце), где первый ячейка - последнее воскресенье предыдущего месяца (если текущий месяц не начинается в воскресенье)

Чтобы вычислить дату в первой ячейке, используйте

DateTime startDate = firstDayOfTheMonth.AddDays(-(int)firstDayOfTheMonth.DayOfWeek);

Затем, чтобы сгенерировать таблица в вашем представлении

<table>
    <thead>
        .... // add day name headings
    </thead>
    <tbody>
        <tr>
            @for (int i = 0; i < 42; i++)
            {
                DateTime date = startDate.AddDays(i);
                if (i % 7 == 0 && i > 0)
                {
                    @:</tr><tr> // start a new row every 7 days
                }
                <td>@date.Day</td>
            }
        </tr>
    </tbody>
</table>

Вы также можете стилизовать любые дни не в текущем месяце по-разному, и в этом случае вы можете условно добавить имя класса, например

if (startDate.Month == getDate.month)
{
    <td class="current">@date.Day</td>
}
else
{
    <td>@date.Day</td>
}
20
задан Floern 24 May 2016 в 21:19
поделиться

7 ответов

Java 11 и более поздние версии

str = "*".repeat(str.length());

Примечание. Это заменяет новые строки \n на *. Если вы хотите сохранить \n, см. Решение ниже.

Java 10 и ранее

str = str.replaceAll(".", "*");

Этот сохраняет строки новой строки.

Чтобы заменить новые строки на *, а также на Java 10 и более ранних версиях, вы можете использовать:

str = str.replaceAll("(?s).", "*");

(?s) не соответствует чему-либо, кроме активизации DOTALL , что делает . также соответствовать \n.

47
ответ дан aioobe 28 August 2018 в 01:03
поделиться

Как abt создать новую строку с числом * = числом последнего символа строки?

StringBuffer bf = new StringBuffer();
for (int i = 0; i < source.length(); i++ ) {
    bf.append('*');
}
1
ответ дан BachT 28 August 2018 в 01:03
поделиться

Могут быть другие более быстрые / лучшие способы сделать это, но вы можете просто использовать строковый буфер и цикл for:

public String stringToAsterisk(String input) {
    if (input == null) return "";

    StringBuffer sb = new StringBuffer();
    for (int x = 0; x < input.length(); x++) {
        sb.append("*");
    }
    return sb.toString();
}

Если ваше приложение однопоточное, вы можете использовать StringBuilder вместо этого, но он не является потокобезопасным.

Я не уверен, что это может быть быстрее:

public String stringToAsterisk(String input) {
    if (input == null) return "";

    int length = input.length();
    char[] chars = new char[length];
    while (length > 0) chars[--length] = "*";
    return new String(chars);
}
1
ответ дан Jason 28 August 2018 в 01:03
поделиться

Без какой-либо внешней библиотеки и без вашего собственного цикла вы можете сделать:

String input = "Hello";
char[] ca = new char[input.length()];
Arrays.fill(ca, '*');
String output = new String(ca);

BTW, как Arrays.fill(), так и String(char []) очень быстрые.

0
ответ дан Michał Šrajer 28 August 2018 в 01:03
поделиться
System.out.println("foobar".replaceAll(".", "*"));
5
ответ дан Sahil Muthoo 28 August 2018 в 01:03
поделиться

Не используйте регулярное выражение вообще, считайте длину строки и возвращайте соответствующее число звезд.

Обычная Java & lt; 8 Версия:

int len = str.length();
StringBuilder sb = new StringBuilder(len);
for(int i = =; i < len; i++){
    sb.append('*');
}
return sb.toString();

Обычная Java> = 8 Версия:

int len = str.length();
return IntStream.range(0, n).mapToObj(i -> "*").collect(Collectors.joining());

Использование Guava :

return Strings.repeat("*", str.length());
// OR
return CharMatcher.ANY.replaceFrom(str, '*');

Используя Commons / Lang :

return StringUtils.repeat("*", str.length());
11
ответ дан Sean Patrick Floyd 28 August 2018 в 01:03
поделиться
public String allStar(String s) {
    StringBuilder sb = new StringBuilder(s.length());
    for (int i = 0; i < s.length(); i++) {
        sb.append('*');
    }
    return sb.toString();
}
3
ответ дан Stephen C 28 August 2018 в 01:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: