Произошла ошибка из-за отсутствия данных в переменной. Деревня появилась, но данных не было и произошел конфликт. Я создал asyncData
async asyncData(){
return {
headSlogan: ""
}
},
Полный код
<template>
<div class="westartslogan">
<div class="head-slogan">
<h2 v-html="headSlogan"></h2>
</div>
<h3>{{$t('page.home.wellcom_block_subtitle_left')}}</h3>
<ul>
<li><i class="icon"></i>
<div v-html="$t('page.home.wellcom_block_option_1_left')"></div></li>
<li><i class="icon"></i>
<div v-html="$t('page.home.wellcom_block_option_2_left')"></div></li>
<li><i class="icon"></i>
<div v-html="$t('page.home.wellcom_block_option_3_left')"></div></li>
<li><i class="icon"></i>
<div v-html="$t('page.home.wellcom_block_option_4_left')"></div></li>
<li><i class="icon"></i>
<div v-html="$t('page.home.wellcom_block_option_5_left')"></div></li>
</ul>
<div class="startcalc-btn button-container">
<nuxt-link :to="getLocalizedRoute({ name: 'calculator' })" class="uk-button uk-button-default">{{
$t('page.home.wellcom_button_calculator') }}
</nuxt-link >
</div>
<div class="ourproject-btn uk-hidden@s">
<div class="button-container">
<nuxt-link :to="getLocalizedRoute({ name: 'portfolio' })" class="uk-button uk-button-default">
{{ $t('page.home.wellcom_button_portfolio') }}
</nuxt-link>
</div>
</div>
</div>
</template>
<script>
export default {
async asyncData(){
return {
headSlogan: ""
}
},
name: 'we_can',
data () {
return {
filterHeadSlogan: '',
headSlogan: this.$i18n.t('page.home.wellcom_block_title_left'),
windowWidth: 0
}
},
methods: {
getWindowWidth (event) {
this.windowWidth = document.documentElement.clientWidth
if (this.windowWidth >= 960) {
this.headSlogan = this.headSlogan
} else {
var str = this.headSlogan
this.headSlogan = str.replace(/<\/?[^>]+(>|$)/g, '')
}
}
},
mounted() {
this.$nextTick(function () {
window.addEventListener('resize', this.getWindowWidth);
//Init
this.getWindowWidth()
})
}
}
</script>
<style scoped>
</style>
Я не знаю, что regex Java возражает, что хорошо, но что-то вроде этого шаблон сделает это:
^Address:\s*((?:(?!^\w+:).)+)$
принимающая мультилиния и dotall режимы идут.
Это будет соответствовать любой строке, запускающейся с Адреса, сопровождаемого чем-либо до символа новой строки и отдельного слова, сопровождаемого двоеточием.
Если Вы знаете, что следующим полем должна быть "Страна", можно упростить это немного:
^Address:\s*((?:(?!^Country:).)+)$
Прием находится в предварительном утверждении в повторяющейся группе'. (?! Страна:)'. будет соответствовать всему кроме запуска строки 'Страна': таким образом, мы просто засовываем его в неполучение круглых скобок (?:...), и определяют количество его с +, затем группа все это в нормальных круглых скобках получения.
Принятие "содержания" является строкой, содержащей содержание файла, Ваша основная проблема состоит в том, что Вы используете matches()
где необходимо использовать find()
.
Pattern p = Pattern.compile("^Address:\\s*(.*)$", Pattern.MULTILINE);
Matcher m = p.matcher(content);
if ( m.find() )
{
...
}
Кажется, существует некоторый беспорядок в других ответах о режимах MULTLINE и DOTALL. МУЛЬТИЛИНИЯ - то, что позволяет ^
и $
привязки соответствуют началу и концу, соответственно, логической строки. DOTALL позволяет точке (период, точка, безотносительно) соответствуют символам разделителя строк как \n
(перевод строки) и \r
(возврат каретки). Этот regex должен использовать режим MULTILINE и не должен использовать режим DOTALL.
Вы могли бы хотеть изучить Properties
класс вместо regex. Это предоставляет Вам способы управлять простым текстом или XML-файлами для представления пар "ключ-значение".
Таким образом, можно читать в файле в качестве примера и затем получить значения как поэтому после загрузки в a Properties
объект:
Properties properties = new Properties();
properties.load(/* InputStream of your file */);
Assert.assertEquals("Peter", properties.getProperty("Name"));
Assert.assertEquals("St. Serrano número 12, España", properties.getProperty("Address"));
Assert.assertEquals("Spain", properties.getProperty("Country"));
Я не означаю быть палкой в грязи, но необходимо ли использовать regex? Почему бы не сэкономить Ваше будущее сам (или другие) головная боль и сделать:
String line = reader.readLine();
while(line != null)
{
line = line.trim();
if(line.startsWith("Address: "))
{
return line.substr("Address: ".length()).trim();
}
line = reader.readLine();
}
return null;
Конечно, это может быть параметризовано немного также и помещено в метод.
Иначе я был бы второй Свойства или предложения JYaml.
Не человек Java, но не был бы a "Address: (.*)$"
работа?
Править: Без Шаблона. МУЛЬТИЛИНИЯ | Шаблон. Опция DOTALL это должно соответствовать только на той строке.
Это может содержать новую строку? Если это не может содержать новую строку, Вы не должны использовать многострочный модификатор и можете сделать вместо этого
Pattern p = Pattern.compile("^Address: (.*)$");
Если это может, альтернатива, о которой я могу думать,
Pattern p = Pattern.compile("Address: (.*)\nCountry", Pattern.MULTILINE);
Без DOTALL точка не будет соответствовать новой строке, таким образом, можно будет явно указать его в regexp, позволяя Вам сделать то, о чем Вы спросили.
Необходимо определенно проверить YAML.
Вы могли попробовать JYaml.
Лучший из всего это имеет реализации на многих языках.
PS я попробовал демонстрационный текст в YAML:: XS, и это работает отлично.