Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.81/58: Рейтинг темы: голосов - 58, средняя оценка - 4.81
2 / 2 / 0
Регистрация: 06.07.2013
Сообщений: 97

Замена символов массива

06.07.2013, 19:47. Показов 10872. Ответов 17
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем доброго времени суток!
Яву начал изучать недавно, по-этому вопрос:
есть массив исходной строки символов, есть массив подстроки исходной строки, есть заменяющий массив( для замены подстроки)
К примеру : исходный массив "hello world", нужно заменить "ll" на "ppp", по сути это можно сделать через метод replace, но он для массивов не подходит
Проблема в том, что заменяются все символы "l" на "p", а мне нужно только в слове "hello"

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
package pkgnew;
 
 
public class NewClass {
    public static void main(String[] args) {
        // TODO Auto-generated method stub      
        String str20 = "hello world";
        String str21 = "ll";
        String str22 = "ppp";
        String NewResult = null;        
        char[] a1 = str20.toCharArray();
        char[] b1 = str21.toCharArray();
        char[] c1 = str22.toCharArray();
        char[] r1 = new char[c1.length-1+a1.length-b1.length];
       
        
        for ( int n=0; n<=r1.length-1; n++){
            for (int k=0; k<=c1.length-1; k++){
                for (int j=0; j<=b1.length-1; j++){
                    for ( int i=0; i<=a1.length-1; i++){
                        if ( a1[i] != b1[0]) {
                            r1[i] = a1[i];
                        }
                             if ( b1[0] == a1[i]){
                                                     
                                if (b1[j] == a1[i]){
                                                            r1[n] = c1[k];
                                                       }
                                                        
                            }
                        
                        }
                    }
                }    
            }
        
        NewResult = new String(r1);
        System.out.println(NewResult);
        
    
 
    }       
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.07.2013, 19:47
Ответы с готовыми решениями:

Замена символов массива на 0 и 1
Подскажите пожалуйста, как пробить текст input на наличие букв word и заменить их (п,р,и,в,е,т) на 1, а все остальное на 0. Должно...

Замена символов в текстовом поле согласно содержимого массива.
Нужна помощь по коду. Задумка такая: каждые несколько кадров в текстовом поле меняется несколько символов на следующие из массива. Знаю...

Замена символа в строке на другой символ из массива символов
Здравствуйте. Помогите пожалуйста. Пишу однозвучный шифр и возникла проблема. В textBox вводится текст, который нужно зашифровать....

17
38 / 38 / 11
Регистрация: 21.05.2013
Сообщений: 128
06.07.2013, 21:16
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
import java.util.regex.*;
 
public class class5 {
 
    public static void main(String[] args) {
        
        Pattern p = Pattern.compile("ll");
        Matcher m =  p.matcher("hello world");
        System.out.println(m.replaceAll("ppp"));
        
    }
 
}
Добавлено через 13 минут
Java
1
System.out.println("hello world".replace("ll", "ppp"));
2
2 / 2 / 0
Регистрация: 06.07.2013
Сообщений: 97
07.07.2013, 00:16  [ТС]
как это сделать используя циклы по длине массива?
0
 Аватар для Vortal
104 / 104 / 27
Регистрация: 11.08.2011
Сообщений: 301
07.07.2013, 01:37
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public class ReplaceSymvol {
    public static void main(String args[]) {
        int i = 0;
        String result = "";
        String str = "hello world";
        String[] strmass = str.split(" ");
 
        if (strmass[0].contains("l")) {
 
            strmass[0] = strmass[0].replaceAll("l", "ppp");
 
        }
 
        for (String a : strmass) {
 
            result += a+" ";
        }
        System.out.println(result);
    }
 
}
Добавлено через 9 минут
или так

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public class ReplaceSymvol {
    public static void main(String args[]) {
        String result="";
        String str = "hello world";
        char[] splitStr = str.toCharArray();
 
        for (int i = 0; i < splitStr.length; i++) {
            if (splitStr[i] == 'l') {
                splitStr[i] = 'p';
            }
            if (splitStr[i] == ' ')
                break;
            
        }
        for(char c: splitStr){
            result+=Character.toString(c);
        }
        
        System.out.println(result);
    }
 
}
0
2 / 2 / 0
Регистрация: 06.07.2013
Сообщений: 97
08.07.2013, 17:28  [ТС]
необходимо заменить две подряд идущие буквы "ll" в массиве а1 , как проверить что их количество в а1 совпадает с количеством в b1?
0
ɐwʎ ɔ vǝmоɔ dиw ɐʚонɔ
 Аватар для tankomaz
443 / 442 / 100
Регистрация: 14.10.2012
Сообщений: 1,146
Записей в блоге: 9
08.07.2013, 18:09
ну так "поправьте"
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public class CyberTest {
    public static void main(String args[]) {
        int i = 0;
        String result = "";
        String str = "hello world";
        String[] strmass = str.split(" ");
 
        if (strmass[0].contains("ll")) {
 
            strmass[0] = strmass[0].replaceAll("ll", "ppp");
 
        }
 
        for (String a : strmass) {
 
            result += a+" ";
        }
        System.out.println(result);
    }
 
}
0
2 / 2 / 0
Регистрация: 06.07.2013
Сообщений: 97
09.07.2013, 00:07  [ТС]
а почему так нельзя? вернее в чем ошибка?

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
package pkgnew;
 
 
public class NewClass {
    public static void main(String[] args) {
        // TODO Auto-generated method stub      
        String str20 = "hello world";
        String str21 = "ll";
        String str22 = "pbg";
        String NewResult = null;        
        char[] a1 = str20.toCharArray();
        char[] b1 = str21.toCharArray();
        char[] c1 = str22.toCharArray();
        char[] r1 = new char[c1.length+a1.length-b1.length];
        int point1 = 0;
        
        for ( int n=0; n<=r1.length-1; n++){
            for (int k=0; k<=c1.length-1; k++){
                for (int j=0; j<=b1.length-1; j++){
                    for ( int i=0; i<=a1.length-1; i++){
                        if ( a1[i] != b1[j]) {
                            r1[i] = a1[i];
                        }
                            // if ( b1[j] == a1[i]){
                                             
                                                     while ( b1[j] == a1[i]){
                                                     point1++;
                                                     if (point1 < b1.length-1){
                                                         r1[n] = c1[k];
                                                     }
                                                     else {
                                                         break;
                                                     }
 
                    }
                }    
            }
        }
        NewResult = new String(r1);
        System.out.println(NewResult);
        System.out.println(point1);
        
    
 
    }       
}
0
ɐwʎ ɔ vǝmоɔ dиw ɐʚонɔ
 Аватар для tankomaz
443 / 442 / 100
Регистрация: 14.10.2012
Сообщений: 1,146
Записей в блоге: 9
09.07.2013, 01:46
потому что "без бутылки" не разобраться
0
 Аватар для AckiyBolt
653 / 402 / 35
Регистрация: 19.02.2013
Сообщений: 1,072
Записей в блоге: 2
09.07.2013, 01:55
шо нельзя? де ошибка? у меня все работает. ну как-то работает. делает что-то... важное
0
2 / 2 / 0
Регистрация: 06.07.2013
Сообщений: 97
09.07.2013, 14:06  [ТС]
не корректно выполняет замену символов

Добавлено через 44 минуты
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
package p1;
 
public class mainNew {
 
    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub      
        String str20 = "welcome to city columbia";
        String str21 = "co";
        String str22 = "bob";
        String NewResult = null;        
        char[] a1 = str20.toCharArray();
        char[] b1 = str21.toCharArray();
        char[] c1 = str22.toCharArray();
        char[] r1 = new char[a1.length+c1.length-b1.length];
        int p1=0;
        
            for ( int i=0; i<=a1.length-1; i++) {
                
                    for ( int n=0; n<=r1.length-1; n++){                                                
                            do {
                                r1[i] = a1[i];
                            }
                            while ( a1[0] == b1[0]);
                        
                            
                            for ( int j=0; j<=b1.length-1; j++){
                                for (int k=0; k<=c1.length-1; k++){
                                if (b1[j] == a1[i] ){
                                
                                    
                                    r1[i] = c1[k];
                                    
                                }
                                }
        }   
                }
            }NewResult = new String(r1);
        System.out.println(NewResult);
        
    }
 
 
 
}
заменяются все символы "c" и "o" в строке, нужно только подряд идущие,как исправить,подскажите плз
0
ɐwʎ ɔ vǝmоɔ dиw ɐʚонɔ
 Аватар для tankomaz
443 / 442 / 100
Регистрация: 14.10.2012
Сообщений: 1,146
Записей в блоге: 9
09.07.2013, 17:09
Цитата Сообщение от SkyL1ne_tm Посмотреть сообщение
не корректно выполняет замену символов

Добавлено через 44 минуты
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
package p1;
 
public class mainNew {
 
    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub      
        String str20 = "welcome to city columbia";
        String str21 = "co";
        String str22 = "bob";
        String NewResult = null;        
        char[] a1 = str20.toCharArray();
        char[] b1 = str21.toCharArray();
        char[] c1 = str22.toCharArray();
        char[] r1 = new char[a1.length+c1.length-b1.length];
        int p1=0;
        
            for ( int i=0; i<=a1.length-1; i++) {
                
                    for ( int n=0; n<=r1.length-1; n++){                                                
                            do {
                                r1[i] = a1[i];
                            }
                            while ( a1[0] == b1[0]);
                        
                            
                            for ( int j=0; j<=b1.length-1; j++){
                                for (int k=0; k<=c1.length-1; k++){
                                if (b1[j] == a1[i] ){
                                
                                    
                                    r1[i] = c1[k];
                                    
                                }
                                }
        }   
                }
            }NewResult = new String(r1);
        System.out.println(NewResult);
        
    }
 
 
 
}
заменяются все символы "c" и "o" в строке, нужно только подряд идущие,как исправить,подскажите плз
дам вам совет - сожгите этот код, поверьте так будет лучше

Напишите более понятные "вещи" чем 100500 цикл-в-цикле-через-циклический-цикл-цикленный с созданием объекта типа String
0
 Аватар для verylazy
462 / 462 / 71
Регистрация: 26.02.2013
Сообщений: 1,263
09.07.2013, 17:26
так нельзя шоли?
Java
1
2
3
4
5
6
7
8
9
public class Test {
 
    public static void main(String[] args) {
        String str = "Алооооо гарааааааж!!!!!!";
        str = str.replaceAll("о+", "о");
        str = str.replaceAll("а+", "а");
        System.out.println(str);
    }
}
Bash
1
Ало гараж!!!!!!
0
2 / 2 / 0
Регистрация: 06.07.2013
Сообщений: 97
10.07.2013, 00:01  [ТС]
Цитата Сообщение от verylazy Посмотреть сообщение
так нельзя шоли?
Java
1
2
3
4
5
6
7
8
9
public class Test {
 
    public static void main(String[] args) {
        String str = "Алооооо гарааааааж!!!!!!";
        str = str.replaceAll("о+", "о");
        str = str.replaceAll("а+", "а");
        System.out.println(str);
    }
}
Bash
1
Ало гараж!!!!!!
в том то и вопрос,что нужно через массивы
0
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
10.07.2013, 03:21
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
import java.util.Arrays;
 
public class ArrayMultiReplacer {
    public static void main(String[] args) {
        char[] s = "Hello World".toCharArray();
        char[] pattern = "ll".toCharArray();
        char[] replace = "PPP".toCharArray();
        System.out.println(Arrays.toString(replaceAll(s, pattern, replace)));
        System.out.println(Arrays.toString(replaceAll(s, replace, pattern)));
 
    }
 
    static public char[] replaceAll(final char[] src, char[] pattern, char[] replace) {
        char[] temp1 = src.clone();
        char[] temp2 = null;
        while (true) {
            temp2 = replaceOnce(temp1, pattern, replace);
            if (isEqual(temp1, temp2)) {
                break;
            }
            temp1 = temp2;
        }
        return temp2;
    }
 
    static public char[] replaceOnce(final char[] src, char[] pattern, char[] replace) {
 
        char[] temp = src.clone();
        int sliceSize = pattern.length;
        for (int i = 0; i < src.length; i++) {
            char[] slice = getSlice(src, i, sliceSize);
            boolean eq = isEqual(slice, pattern);
            if (eq) {
                temp = deleteFrom(temp, i, pattern.length);
                temp = insertInto(temp, i, replace);
                return temp;
            }
        }
 
        return temp;
    }
 
    static char[] deleteFrom(char[] src, int position, int delete) {
        char[] rez = new char[src.length - delete];
        System.arraycopy(src, 0, rez, 0, position);
        System.arraycopy(src, position + delete, rez, position, src.length - position - delete);
        return rez;
    }
 
    static char[] insertInto(char[] src, int position, char[] insertion) {
        char[] rez = new char[src.length + insertion.length];
        for (int i = 0; i < position; i++) {
            rez[i] = src[i];
        }
        for (int i = position; i < position + insertion.length; i++) {
            rez[i] = insertion[i - position];
        }
        for (int i = position + insertion.length; i < rez.length; i++) {
            rez[i] = src[i - insertion.length];
        }
        return rez;
    }
 
    static char[] getSlice(char[] src, int position, int size) {
        return Arrays.copyOfRange(src, position, position + size);
    }
 
    static boolean isEqual(char[] one, char[] two) {
        if (one.equals(two)) {
            return true;
        } else if (one.length == two.length) {
            for (int i = 0; i < one.length; i++) {
                if (one[i] != two[i]) {
                    return false;
                }
            }
        } else {
            return false;
        }
        return true;
    }
}
2
2 / 2 / 0
Регистрация: 06.07.2013
Сообщений: 97
10.07.2013, 13:27  [ТС]
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public class CyberTest {
    public static void main(String args[]) {
        int i = 0;
        String result = "";
        String str = "hello world";
        String[] strmass = str.split(" ");
 
        if (strmass[0].contains("ll")) {
 
            strmass[0] = strmass[0].replaceAll("ll", "ppp");
 
        }
 
        for (String a : strmass) {
 
            result += a+" ";
        }
        System.out.println(result);
    }
 
}
для чего используется конструкция

Java
1
String[] strmass = str.split(" ");
?
0
ɐwʎ ɔ vǝmоɔ dиw ɐʚонɔ
 Аватар для tankomaz
443 / 442 / 100
Регистрация: 14.10.2012
Сообщений: 1,146
Записей в блоге: 9
10.07.2013, 13:36
Java
1
String[] strmass = str.split(" ");
берет строку str и разбивает её на части (разделитель " ", или пробел по нашему), все "кусочки" что получились записываются в массив String[] strmass
1
2 / 2 / 0
Регистрация: 06.07.2013
Сообщений: 97
10.07.2013, 16:52  [ТС]
понял,спасибо)
0
ɐwʎ ɔ vǝmоɔ dиw ɐʚонɔ
 Аватар для tankomaz
443 / 442 / 100
Регистрация: 14.10.2012
Сообщений: 1,146
Записей в блоге: 9
10.07.2013, 16:56
Цитата Сообщение от SkyL1ne_tm Посмотреть сообщение
понял,спасибо)
что же вы других ребят обижаете отсутствием нажатия "спасибо"? вам же не жалко - а им будет приятно, много труда тут собралось
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
10.07.2013, 16:56
Помогаю со студенческими работами здесь

Замена символов "*" в ячейке на элементы массива
Добрый день. Необходимо заменить все звездочки в ячейке на &quot;*-элемент массива&quot; Количество звездочек и элементов массива всегда...

Методы: вывод массива символов, сортировка массива символов
Здравствуйте! Помогите, кто чем может..:grose: Конструктор: параметр-строка, создание массива символов. Методы: вывод массива символов,...

Замена символов
такой вопрос, как сделать так что бы имея 3 масива string роботала замене з учётом месторосположения, примером mas1:=1234; mas2:=3; ...

Замена символов
У меня есть стрингбилдер где все пробелы надо заменить на '+' я сделал это вот так - String s = buildXURL.toString().replaceAll(&quot;...

Замена символов
есть строка string letter = &quot;привет&quot;; Есть 2 алфавита string alp=...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru