Добавление / удаление из String kdb

#kdb

#kdb

Вопрос:

Я выполнял некоторую работу с kdb и возился со строками и переменными. Мне просто было интересно, возможно ли удалить часть строки и добавить что-нибудь, чтобы закончить ее.

 s1:"Hello"  s2:" World"
  

У меня есть совместная строка «Hello World», которую я создал с помощью

 s3:s1,s2
  

Я пытался удалить Hello и добавить что-то после World в совместной строке.

 s3[1*til 6] = Hello
  

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

Комментарии:

1. Какое решение вы пробовали? Вы уже используете comma для создания s3, тогда вы могли бы использовать то же самое для вашего другого требования. Вместо того чтобы просто просить ответа, пожалуйста, также опубликуйте свое решение, которое вы опробовали.

2. s3 [1 * до 6], «Of Warcraft» — это то, что я пробовал

3. Прохладный. Постарайтесь также упомянуть свой подход в вашем вопросе, который поможет другим определить первопричину и увидеть, где вы ошибаетесь.

Ответ №1:

вы могли бы использовать drop (_), чтобы избавиться от «Hello» и join (,), чтобы добавить то, что вы хотите. Что-то вроде

 q)6_s3,"star Hiphop"
"Worldstar Hiphop"
  

Если вы не хотите считать буквы в первом слове, вы могли бы использовать vector из scalar (vs), чтобы получить список включенных слов и проиндексировать его, а затем присоединиться к нему:

 q)(" " vs s3)[1],"star Hiphop"
"Worldstar Hiphop"
  

Надеюсь, это поможет.

Ответ №2:

Строки представляют собой списки символов, поэтому функция drop _ все равно будет работать с ними. Например, 1_"Hello" вернет ello .

Итак, если вы хотите удалить «Hello» из вашей строки s3 , вы бы использовали

 q)5_s3
"World"
  

Добавление чего-либо в конец этого затем требует оператора join , , например

 q)s:"HelloWorld"
q)s1:"Mr. "
q)s2:5_s
q)s3:"wide"
q)s1,s2,s3
"Mr. Worldwide"
  

Ответ №3:

Вы могли бы использовать функцию ssr (замена поиска в строке).

 q)s3:"HelloWorld"

q)ssr[s3;"Hello";""], " of War"
"World of War"